Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Widoczność różnic w łączeniu podzapytania i gdzie

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 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 .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle Database12c ORA 01918 i błąd połączenia

  2. Oracle SQL-Loader skutecznie obsługuje wewnętrzne podwójne cytaty w wartościach

  3. Oracle Sequence nextval przeskakuje numer w tę i z powrotem

  4. Jak wykonywać zadania w Oracle?

  5. Jak wyłączyć pulę połączeń?