Это запрос теоретической / передовой практики для получения мнений.
Я привык рассматривать предложение WHERE и условия JOIN как хорошее место для "размещения" любой бизнес-логики, которая сделает мой запрос более точнымнасколько это возможно.
Но мое внимание привлекло то, что добавление несвязанной бизнес-логики в качестве условия JOIN может противоречить "лучшим практикам".Например:
SELECT a.Id, b.Id
FROM foo AS a
LEFT OUTER JOIN bar AS b ON a.Id = b.Id
AND GETDATE() >= "18/5/2011"
Пример немного наивен: в реальной жизни вызывающему действительно требуется дополнительное условие, и отсутствие его действительно приведет к неверному результату (что вызывающий должен будет фильтровать вcode).
Обратите внимание, что при соединениях OUTER и когда этого требует логика, размещение условия в предложении WHERE не является возможным.