2013-02-18 79 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