W
FROM working_place wp
JOIN working_place_worker wpw ON ...
WHERE ...
ON
klauzula odnosi się tylko do dwóch tabel uczestniczących w łączeniu, a mianowicie wp
i wpw
. Nazwy z zewnętrznego zapytania nie są dla niego widoczne.
WHERE
klauzula (i jej kuzyn HAVING
to sposób, w jaki zapytanie zewnętrzne jest skorelowane z podzapytaniem. Nazwy z zewnętrznego zapytania są widoczne dla niego.
Aby ułatwić zapamiętanie,
- ON dotyczy JOIN, jak dwie tabele odnoszą się do wiersza (lub wierszy)
- GDZIE chodzi o kryteria wyboru, test, który muszą przejść wiersze
Chociaż parser SQL dopuszcza literały (które nie są nazwami kolumn) w klauzuli ON, rysuje linię w odwołaniach do kolumn poza złączeniem. Możesz uznać to za przysługę, która chroni przed błędami.
W twoim przypadku wo
tabela nie jest częścią JOIN
i zostaje odrzucony. To jest część całego zapytania i jest rozpoznawana przez WHERE
.