2011-11-02 43 views
0

我試圖查詢「部件」表的所有行,即使它們的編號是無的。這是給我一個問題,因爲當訂購的號碼不在「order_line」表上時,它不顯示該項目沒有任何項目(這實際上是分配中該問題的原因)用於查詢沒有值的行的SQL查詢

這是我的sql for找到所有與數量的零件下令:

SELECT PART.PART_NUM, 
    PART.DESCRIPTION, 
    PART.ON_HAND, 
    PART.PRICE, 
    ORDERS.ORDER_NUM, 
    ORDER_LINE.NUM_ORDERED 
FROM PART 
INNER JOIN ORDER_LINE 
ON PART.PART_NUM = ORDER_LINE.PART_NUM 
INNER JOIN ORDERS 
ON ORDER_LINE.ORDER_NUM = ORDERS.ORDER_NUM 
ORDER BY PART.PART_NUM 

這是學校,所以如果你能指出我在這將是偉大正確的方向。希望這是有道理的..

+0

您需要使用外部聯接。 –

回答

0

正如您所看到的,當您指定INNER JOIN時,這意味着對於行中的結果集,它必須由JOIN 左側的現有行組成從右側開始的現有行。

但INNER JOIN不是加入表的唯一方法。您也可以使用LEFT或RIGHT OUTER JOIN,它只需要兩個表中的一個在其中有一行(來自JOIN另一側的值在結果集中都是NULL)。甚至還有一個FULL OUTER JOIN,它需要雙方的

在您的文檔中查找OUTER JOIN以獲取更多信息。

+0

非常感謝。我將研究不同類型的連接,顯然缺乏對差異的理解。 – Sackling

3

使用「左外連接」代替「內部聯接」爲ORDER_LINE表

編輯:正如馬丁指出的那樣,你需要「與內部聯接的」左更換兩外連接'

+0

如果這是唯一的更改,則會通過下一次連接將其轉換回內連接。 –

+0

thanx Martin - 我錯過了 - 修復了我的答案 – Ray