Вы ссылаетесь на условие:
AND s.LOCATION = 'RM30'
(Пожалуйста, уточните названия столбцов!)
A LEFT JOIN
сохраняет все строки в первой таблице, когда нет совпадения со второй таблицей (а также все совпадающие пары). Когда нет совпадения, значения из второй таблицы NULL
.
Когда условие в предложении WHERE
:
WHERE s.LOCATION = 'RM30'
затем s.LOCATION
равно NULL
для несовпадающих строк. Таким образом, условие не выполняется (WHERE
отфильтровывает как NULL
, так и "ложные" условия). Другими словами, LEFT JOIN
превращается в INNER JOIN
.
Конечно, когда это условие содержится в предложении ON
, такая фильтрация не выполняется из-за определения LEFT JOIN
.