【发布时间】:2015-08-03 07:06:13
【问题描述】:
我正在查询一个对自身具有嵌套引用的表,并且我需要获取对我正在使用的 INNER JOIN 值具有空引用的记录。换句话说,树表记录可能不会达到相同的深度,我需要全部获取。
我使用 atm 的查询是:
SELECT DISTINCT <valuesThatINeed>
FROM atable foo
INNER JOIN treetable bar ON foo.id_bar = bar.id
INNER JOIN treetable bar2 ON bar.id_bar = bar2.id
INNER JOIN treetable bar3 ON bar2.id_bar = bar3.id
WHERE
<constraints>
我读到我可以通过添加一个 OR 语句来扩展 INNER JOIN 条件,询问 bar.id_bar 是否为 NULL,但如果这样做,我将无法达到更高的级别:
SELECT DISTINCT <valuesThatINeed>
FROM atable foo
INNER JOIN treetable bar ON foo.id_bar = bar.id
INNER JOIN treetable bar2 ON bar.id_bar = bar2.id OR (bar.id_bar IS NULL)
INNER JOIN treetable bar3 ON bar2.id_bar = bar3.id
WHERE
<constraints>
【问题讨论】:
标签: sql-server sql-server-2008 join nested-table