我在我的數據庫中的兩個表:與每個項目的當前價格每小時採購物料如何返回所有行從一個表中返回值,如果不存在返回0?
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更新:
表1。所以從表2可以清楚地看出,肉類最後一次交易的時間是2013年2月20日上午10點。魚類沒有在當天交易,它於19-02-2013上午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子句中應該應用什麼聯接類型和條件來獲得上述輸出?
請您詳細解釋一下上面的代碼嗎? – stockBoi 2013-03-04 18:00:50
@ user2132726:看看我上面的修改。 – dotNET 2013-03-05 03:49:08
實際數據是一個股票市場價格表,但顯示更簡單的例子,我用肉,魚等。雖然我試圖用我的實際代碼完成上述查詢,但它不是我想要的。任何方式,感謝您的幫助。你能告訴我一個查詢代碼在哪裏,我將設置最新的時間是這樣的:SELECT p.Item,p.Qnt l.price FROM TABLE1 as p INNER JOIN Table2 as l ON p.Item = l.Item WHERE l。 Datetime ='2013-02-20 10:00:00'。如果與l.Datetime匹配,結果輸出將顯示ltp,否則將顯示ltp = 0;怎麼做? – stockBoi 2013-03-05 11:24:02