2013-02-18 106 views
1

我有表(user_page_cells)用下面的查詢顯示:JOIN問題與SQL Server

SELECT tag_id, nid 
FROM user_page_cells WHERE nid = 1; 

它給我的結果:

enter image description here

我也有一個表(graph_tags) :

SELECT * 
FROM graph_tags where page_node = 1 

哪給了我結果:

enter image description here

user_page_cells.nidgraph_tags.page_node這兩個參考頁節點。

我需要一個查詢,顯示我的第一個查詢結果

(SELECT tag_id, nid FROM user_page_cells WHERE nid = 1;) 

有一個額外的列。如果不是nid = page_nodeNULL,則此列需要從第二個表(graph_tags)獲得default_graph_tag_id

我嘗試過使用LEFT,RIGHT,FULL OUTER JOIN但我無法得到我要找的結果。

下面是我認爲會起作用的查詢的一個示例。

SELECT user_page_cells.tag_id, graph_tags.default_graph_tag_id 
FROM user_page_cells 
LEFT OUTER JOIN graph_tags ON user_page_cells.nid = graph_tags.page_node 
WHERE user_page_cells.nid = 1. 

我總是得到,如果LEFTRIGHT,或FULL使用這種不管;

enter image description here

任何人都可以點我在正確的方向?

謝謝

+0

你得到的結果有什麼問題? – 2013-02-18 20:41:26

+0

你的輸出有什麼問題? – DevelopmentIsMyPassion 2013-02-18 20:43:24

+0

我希望結果看起來像第一個查詢的結果。但是,如果tag_id匹配2個表中的其他字段,則會顯示graph_tag_id。 – Mildfire 2013-02-18 20:49:49

回答

4

如果我明白你想要什麼,你只需要在你的連接中包含tag_id。

SELECT user_page_cells.tag_id, graph_tags.default_graph_tag_id 
FROM user_page_cells 
Left OUTER JOIN graph_tags 
ON user_page_cells.nid = graph_tags.page_node 
and user_page_cells.tag_id=graph_tags.tag_id 
where user_page_cells.nid = 1 
+0

BOOM中有任何東西,正是我所需要的。謝啦 – Mildfire 2013-02-18 20:51:49