两个表之间的SQL子查询,与另一个日期进行比较的最大日期

时间:2015-06-18 17:37:17

标签: mysql

我有两张桌子:

第一

Order   Product     Date of order
4772    CF007115    2014-03-31 14:24:29.000

和第二个

Product     Date of buy             Price 
CF007115    2014-03-18              111.398
CF007115    2014-03-27              103.121
CF007115    2014-05-08              0.061
CF007115    2014-07-21              0.062
CF007115    2015-01-22              0.065
CF007115    2015-05-29              0.068

我需要下一个结果

Order   Product     Date of order           date of buy             Price
4772    CF007115    2014-03-31              2014-03-27              103,121

结果必须显示最接近订单的价格。

我试着用这个:

SELECT DISTINCT  dbo.OPSinValor.orden, dbo.OPSinValor.CodComponente, dbo.OPSinValor.Fecha_Declaracion, dbo.EntradasParaOP3.FechaIngStock, dbo.EntradasParaOP3.ppp
FROM  dbo.OPSinValor 
LEFT OUTER JOIN
dbo.EntradasParaOP3 ON dbo.OPSinValor.CodComponente = dbo.EntradasParaOP3.Articulo
WHERE     (dbo.OPSinValor.CodComponente = 'CF007115')
GROUP BY dbo.OPSinValor.orden, dbo.OPSinValor.CodComponente, dbo.OPSinValor.Fecha_Declaracion, dbo.EntradasParaOP3.FechaIngStock, 
                      dbo.EntradasParaOP3.ppp
HAVING      (dbo.OPSinValor.Fecha_Declaracion >= MAX(dbo.EntradasParaOP3.FechaIngStock))

这是结果

4772    CF007115    2014-03-31  2014-03-18  111,398
4772    CF007115    2014-03-31  2014-03-27  103,121

我尝试使用子查询,但结果会给我第二个表的所有记录

1 个答案:

答案 0 :(得分:0)

我希望您的第一个表格是您的订单,第二个表格(包含更多行)是您的产品表格 - 只是为了有一个名称约定。

你可以试试这个:

SELECT *
FROM orders o
INNER JOIN (
    SELECT *
    FROM products p
    WHERE p.[date of buy] <= o.[date of order]
    ORDER BY p[date of buy] DESC LIMIT 1
) as p
相关问题