MySQL加入和最新的批次信息

时间:2016-08-14 18:31:34

标签: php mysql join group-by having

我有四张桌子。第一个描述混合的项目。第二个是混合和项目之间的链接表。第三个是项目表,第四个是批次信息 - 批号,以及该批次何时开始使用。

混合

mixID | mixName
----------------
1     | Foxtrot
2     | Romeo

mixLink

mixID | itemID
----------------
1     | 1
1     | 2
1     | 3

项目

itemID| itemName
----------------
1     | square
2     | triangle
3     | hexagon

itemLots

itemID| lotNo | startDate
-------------------------
1     | 22/5/3| 22/07/16
2     | 03/5  | 25/07/16
2     | 04/19 | 12/08/16
3     | 15/0  | 05/08/16

现在,我需要能够从数据库中获取信息,该信息详细说明了混合物中的所有项目,以及最近使用的批号,如下所示:

itemName | lotNo
----------------
square   | 22/5/3
triangle | 04/19
hexagon  | 15/0

我已经尝试过十几种不同的连接组合,分组,最大值,子查询和拥有;一切都无济于事。任何帮助都会非常感激,我已经把头发拉了几个小时,我觉得我的指甲只是在解决方案!#/ p>

1 个答案:

答案 0 :(得分:0)

这将为您提供您之后的结果,并且如果您正确完成索引,它们将表现得非常好。我不确定你引用mix的含义是什么,因为它在你的示例输出中并不明显,但我已将它包含在WHERE子句中,所以希望你能理解你在哪里使用它。

SELECT i.itemName
, (SELECT il.lotNo FROM itemLots il 
WHERE il.itemID=i.itemID
ORDER BY il.startDate desc
LIMIT 1) as lotNo
FROM item i 
JOIN mixLink ml ON ml.itemID=i.itemID
JOIN mix m ON m.mixID=ml.mixID
WHERE m.mixName="Foxtrot";