使用JOIN关键字时添加两个条件是一个好习惯吗?

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)

Dew*_*wfy 5

为什么不?更!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