Raú*_*Roa 4 sql t-sql left-join
我想知道在使用JOIN关键字时是否需要条件是一个好习惯.
我试图按日期过滤此结果集,但即使没有使用WHERE子句的日期的费用或收入,我也无法列出所有分支.有没有更好的方法来做到这一点,如果是这样的话?
SELECT
Branches.Name
,SUM(Expenses.Amount) AS Expenses
,SUM(Incomes.Amount) AS Incomes
FROM
Branches
LEFT JOIN Expenses
ON Branches.Id = Expenses.BranchId AND Expenses.Date = '3/11/2010'
LEFT JOIN Incomes
ON Branches.Id = Incomes.BranchId AND Incomes.Date = '3/11/2010'
GROUP BY Branches.Name
Run Code Online (Sandbox Code Playgroud)
为什么不?更!OUTER JOIN对这两个条件有非常具体的伎俩!INNER JOIN可以容忍重组,例如以下内容是等效的:
INNER JOIN Expenses
ON Branches.Id = Expenses.BranchId
WHERE
Expenses.Date = '3/11/2010'
Run Code Online (Sandbox Code Playgroud)
通过:
INNER JOIN Expenses
ON Branches.Id = Expenses.BranchId AND Expenses.Date = '3/11/2010'
Run Code Online (Sandbox Code Playgroud)
但!!!对于OUTER JOIN,你必须在ON中准确指定两个条件,因为WHERE会将结果视为INNER JOIN