2012-09-03 102 views
0

這一定比我做得更容易,但我在這裏會變得瘋狂。 我想要做的就是從三個表,像這樣創建一個視圖:有條件的列查看Mysql查看

SELECT tableA.name, tableB.id, tableB.categoryID, tableC.categoryParentID 
FROM tableB, tableA where tableA.id=tableB.id JOIN tableC on 
tableC.categoryID = tableB.categoryID; 

夠簡單。但是,我想要完成的是,在tableB.categoryID爲NULL的情況下,我希望tableC.categoryParentID顯示爲NULL值而不是categoryParentID值。

到目前爲止,我的結果是我可以得到表來顯示tableB.categoryID不爲空的所有行,並排除完全具有類別ID的空值的行 - 我不想這樣做 - 或者我得到一些奇怪的變化,包括來自tableB的每一行的categoryParentID的每一行 - 這使我有3,000,000行以上的行,並且也是不正確的。

如果這不清楚,我可以更多地解釋。

在此先感謝。

+0

這聽起來像你想有一個LEFT JOIN的INNER而不是JOIN – Taryn

回答

1

如果我正確認識你,你想要的是:

SELECT tableA.name, 
     tableB.id, 
     tableB.categoryID, 
     tableC.categoryParentID 
    FROM tableA 
    JOIN tableB 
    ON tableB.id = tableA.id 
    LEFT 
OUTER 
    JOIN tableC 
    ON tableC.categoryID = tableB.categoryID 
; 

(見the "left outer join" section of the Wikipedia article on SQL joins。)

+0

,完美的工作!謝謝。我會嘗試wiki文章......出於某種原因試圖理解JOIN語法總是讓我的眼睛釉上一點。 – user1167442

+0

@ user1167442:不客氣! – ruakh

+0

已刪除 - 沒有太長的相關性 – user1167442