2014-06-04 79 views
-1

enter image description here從3代表的SQL查詢,不能得到結果所需

enter image description here

- 列出已與藝術家,訂購日期和發貨日期一起銷售的所有圖書

SELECT title, artist, order_date, ship_date 
FROM items,orders,orderline 
WHERE orders.order_id = orderline.order_id 
AND items.item_id = orderline.item_id; 

我想盡自己的查詢了我得到以下

Under the Sun, Donald Arley, 11/15/2013, 11/20/2013 

Under the Sun, Donald Arley, 12/20/2013, 12/22/2013 

Under the Sun, Donald Arley, 1/18/2014, 1/23/2014 

Dark Lady, Keith Morris, 1/31/2014, 2/4/2014 

Dark Lady, Keith Morris, 3/10/2014, 3/15/2014 

Dark Lady, Keith Morris, 3/14/2014, 3/19/2014 

Dark Lady, Keith Morris, 11/15/2013, 11/20/2013 

Happy Days, Andrea Reid, 2/27/2014, 3/2/2014 

Happy Days, Andrea Reid, 10/30/2013, 11/3/2013 

Happy Days, Andrea Reid, 12/18/2013, 12/22/2013 

The Hunt, Walter Alford, 1/31/2014, 2/4/2014 

The Hunt, Walter Alford, 3/10/2014, 3/15/2014 

Ë結果tc ...............

+1

如何是你的結果比預期的結果有什麼不同? –

+0

我不認爲他們會,會重新發布你的問題 –

+1

[壞習慣踢:使用舊式JOIN](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/壞習慣 - 踢 - 使用舊樣式joins.aspx) - 老式*逗號分隔的表*樣式列表已停用ANSI - ** 92 ** SQL標準(超過** 20年前**) –

回答

2

這看起來像一個普通的作業問題。

我建議您先熟悉本頁面和網站http://use-the-index-luke.com/sql/join

解決方案:

更改您的語句:

SELECT 
    items.title, items.artist, orders.order_date, orders.ship_date 
FROM 
    items 
JOIN 
    orderline ON orderline.item_id = items.item_id 
JOIN 
    orders ON orders.order_id = orderline.order_id 
+0

我很好奇你的建議查詢如何返回不同的結果,然後提問者的?可能我錯過了一些東西,但我只看到明確限定非歧義列並明確加入而不是隱式加入,這些都不會影響返回的數據。 –

+0

@KevinPostlewaite除非FROM子句中的表名順序對連接有影響,否則我懷疑是否有區別。希望Purple-Rain能夠澄清他的結果出了什麼問題。 – Carter

+0

FROM子句中的列順序對結果沒有影響,除非數據庫引擎選擇不同的執行路徑,否則結果的順序可能不同。 –