Когда писал запрос
SELECT x from A
LEFT JOIN B
ON A.b_id = b.id
Вся таблица A выбрана с подключением к B. Но используется All A.
В случае примера A и B таблицы совпадают, нО ТЕМ НЕМЕНЕЕ. У нас есть полный список таблицы A, в которой к каждой строке прикреплена или не присоединена одна строка таблицы B.
Таким образом, чтобы уменьшить количество строк в таблицах A, необходимо управлять им с помощью WERE CLAUSE
Правильный запрос будет
SELECT a.name as Employee, b.name as Manager from Employee as a
LEFT JOIN Employee as b
ON a.ManagerId = b.Id
WHERE a.ManagerId IS NOT NULL
ON
, используемый для определения правил, которые строки присоединяют к таблице. WERE
предложение фильтрует строки из шага 1. Вдругими словами «вырезать» некоторые строки из таблицы A, в этом примере.
Когда я использую ON FAlSE
: он просто выбирает все строки из A и не объединяет строки B.
SELECT a.name as Employee from Employee as a
LEFT JOIN Employee as b
ON false
WHERE 1
Когда я использую ON TRUE
, он использует ВСЕ A
строк B
раз.
SELECT a.name as Employee from Employee as a
LEFT JOIN Employee as b
ON true
WHERE 1
{"headers": ["Employee"], "values":
[
["Joe"], ["Henry"], ["Sam"], ["Max"],
["Joe"], ["Henry"], ["Sam"], ["Max"],
["Joe"], ["Henry"], ["Sam"], ["Max"],
["Joe"], ["Henry"], ["Sam"], ["Max"]]}