T-SQL>自我加入> where子句不起作用

时间:2018-04-11 07:07:41

标签: sql tsql self-join

这将是我的第一篇文章,希望我能够发布这个问题,并提供足够详细的信息。使它足够具体。

首先,我正在加入一个表格(结构s1 JOIN结构s2)。

然后将此表连接到另一个表(planning_entity pe)。

然后我对上面的结果应用了两个过滤器:

SELECT pe.short_name, s2.description, s1.father_code, s2.structure_code
FROM structure s1
INNER JOIN structure s2 ON s1.father_code = s2.structure_code
INNER JOIN planning_entity pe ON s2.structure_code = pe.planning_code
WHERE pe.short_name ='1024824'
AND s2.structure_code = s1.father_code
ORDER BY s2.structure_code

目的是仅返回s2.structure_code和s1.father_code 的行。但是,我的查询结果似乎返回s2.structure_code和s1.father_code的所有值。 我的自我加入不正确吗?或者我没有正确规定过滤器?

你可能会说,我对SQL很新......任何帮助都非常感谢......

git config --global

自我加入 - 结果

enter image description here

1 个答案:

答案 0 :(得分:0)

试试这个,您的查询很有效,只需要更改下面的选择列,并通过删除where子句来改进它。 复制查询并检查输出。我希望它能够按照您的要求完成,我会从您提到的问题中理解。必须分享你的经验。

SELECT pe.short_name, s1.description, s1.father_code, s2.structure_code
FROM structure s1
INNER JOIN structure s2 ON 
   s1.father_code = s2.structure_code
INNER JOIN planning_entity pe ON 
   s2.structure_code = pe.planning_code and
   pe.short_name ='1024824'
ORDER BY s2.structure_code