我的数据库中有两个表:
表 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 月 20 日上午 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 子句中应该应用什么连接类型和什么条件来获得上述输出呢?