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