【发布时间】:2013-02-18 20:51:50
【问题描述】:
我的数据库中有两个表:
表 1:购买的物品
Item | Qnt | Rate |Total
Meat | 1 | 20 | 20
Fish | 0.5 | 30 | 15
Chicken|1 | 25 | 25
Meat | 2 | 20 | 40
Table2: Trading Price
Item | Datetime | Price
Meat | 2013-02-20 10:00:00 | 20
Meat | 2013-02-20 09:00:00 | 18
Meat | 2013-02-19 08:00:00 | 21
Fish | 2013-02-19 09:00:00 | 15
Fish | 2013-02-19 08:00:00 | 17
Chicken|2013-02-20 09:00:00|26
Chicken|2013-02-20 08:00:00|25
表 1 列出了购买的商品,表 2 每小时更新每件商品的当前价格。因此,从表 2 中可以清楚地看出,Meat 最后一次交易是在 2013 年 2 月 2013 日上午 10 点,而鱼不是在同一天交易,它是在 2013 年 2 月 19 日上午 9 点交易的,而鸡肉是在 2013 年 2 月 9 日上午交易的2013 年 2 月 20 日上午 9 点。我想要做的,列出表 1 中的所有项目,并加入表 2 中各个项目的最后交易价格,如下所示:
Output:
Item | Qty | Total | Last Trade Price
Meat | 1 | 20 | 20
Meat | 2 | 40 | 20
Fish | 0.5 |15 | 15
Chicken|1 |25 |26
这里应该应用什么类型的连接和什么子句来获得理想的输出? 我试过这个查询: SELECT p.Item, p.Qnt l.price FROM Table1 as p INNER JOIN Table2 as l ON p.Item=l.Item WHERE l.Datetime=(SELECT max(Datetime) FROM Table2); 但是通过这个查询,我没有找到所需的结果,因为每个项目的最大日期时间不同,这就是输出中缺少项目的原因。
那么在 WHERE 子句中应该应用什么连接类型和什么条件才能得到上述输出?
【问题讨论】:
标签: mysql