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

Mysql 两个表之间的SQL子查询,与另一个日期比较的最大日期,mysql,Mysql,我有两张桌子: 首先 第二个呢 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

我有两张桌子:

首先

第二个呢

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

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

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

您可以尝试以下方法:

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
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