【发布时间】:2017-10-03 13:54:58
【问题描述】:
我正在调试由其他人创建的报告,它具有以下加入条件。 (我已根据自己的喜好列出并匿名表名)
SELECT --columns
FROM Table1
JOIN Table2
JOIN Table3
ON Table2.pred = Table3.pred
JOIN Table4
ON Table2.pred = Table4.pred
JOIN Table5
ON Table2.pred = Table5.pred AND Table2.pred = Table5.pred AND Table3.pred = Table5.pred
JOIN Table6
ON Table3.pred = Table6.pred
ON Table1.pred = Table5.pred AND Table1.pred = Table5.pred
LEFT JOIN Table7
ON Table5.pred = Table7.pred AND Table5.pred = Table7.pred
LEFT JOIN Table7 AS Table7_1
ON Table5.pred = Table7_1.pred AND Table5.pred = Table7_1.pred
WHERE --conditions
我感到困惑的是,没有将 Table1 与表 2 关联起来的连接,并且在连接到表 6 之后有两个 ON 子句。通常连接多个表:
FROM Table
JOIN Table2
ON --criteria
JOIN Table3
ON --criteria
JOIN Table4
ON --criteria
--etc
查询有效,但作为试图弄清楚它在做什么的人,我正在苦苦挣扎,因为我以前从未见过联接语法。
有谁能给我解释一下语法吗?
【问题讨论】:
-
您在编辑原始查询时是否遗漏了任何括号?
-
有效语法,我写的时候已经给出了解释。您可能想告诉那个人重新考虑他们的道德规范。这是一个糟糕的代码,可以在 2 分钟内重做以提高可读性。
-
同意,我将对其进行重组,但首先我需要了解什么加入了什么!
标签: sql sql-server join syntax