加入SQL Server的问题

时间:2013-02-18 20:38:20

标签: sql sql-server join outer-join

我的表格(user_page_cells)显示以下查询:

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;)

有一个额外的列。如果default_graph_tag_id,则此列需要来自第二个表格graph_tagsnid = page_node),如果不是NULL,则需要LEFT

我尝试过使用RIGHTFULL OUTER JOINSELECT 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. ,但我无法得到我想要的结果。

以下是我认为可行的查询示例。

LEFT

无论是否使用RIGHTFULL或{{1}},我都会得到此信息;

enter image description here

有人能指出我正确的方向吗?

谢谢

1 个答案:

答案 0 :(得分: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