rezumat: în acest tutorial, veți învăța cum să utilizați Clauza PostgreSQL LEFT JOIN
pentru a selecta date din mai multe tabele.
Introducere în PostgreSQL STÂNGA se ALĂTURE clauza
să Presupunem că aveți două tabele: A
și B
.,
Fiecare rând din tabel A
poate avea zero sau mai multe rândurile corespunzătoare din tabelul B
în timp ce fiecare rând din tabel B
are doar un singur rând corespunzătoare în tabelul A
.
Pentru a selecta datele din tabelul A
care poate sau nu poate avea rândurile corespunzătoare din tabelul B
, utilizați LEFT JOIN
clauză.,
următoarea afirmație ilustrează LEFT JOIN
sintaxa care se alătură la masă A
cu masa B
:
Code language: SQL (Structured Query Language) (sql)
Să se alăture masa A
cu masa B
tabel folosind-o la stânga se alăture, urmați acești pași:
- în Primul rând, specifica coloanele în ambele tabele din care doriți să selectați datele din
SELECT
clauză. - în al Doilea rând, specifica stânga (tabelul
A
) înFROM
clauză., - al Treilea, specifica dreptul de tabel (tabelul
B
) înLEFT JOIN
clauză și condiția alătura dupăON
cuvinte cheie.
clauzaLEFT JOIN
începe selectarea datelor din tabelul din stânga. Pentru fiecare rând din tabelul din stânga, compară valoarea din coloana pka
cu valoarea fiecărui rând din coloana fka
din tabelul din dreapta.,
dacă aceste valori sunt egale, clauza de Asociere din stânga creează un rând nou care conține coloane care apar în clauza SELECT
și adaugă acest rând la setul de rezultate.
În cazul în care aceste valori nu sunt egale, clauza de Asociere din stânga creează, de asemenea, un rând nou care conține coloane care apar în clauza SELECT
. În plus, umple coloanele care provin din tabelul din dreapta cu NULL.,
următoarea diagramă Venn ilustrează modul în care LEFT JOIN
clauza de lucrări:
Rețineți că LEFT JOIN
este, de asemenea, menționată ca LEFT OUTER JOIN
.
PostgreSQL STÂNGA se ALĂTURE exemple
Să ne uităm la următoarele film
și inventory
tabele din baza de date eșantion.,
Fiecare rând în film
tabel poate avea zero sau mai multe rânduri în inventory
masă. Fiecare rând din tabelul inventory
are un singur rând în tabelulfilm
.
film_id
coloană se stabilește legătura dintre film
și inventory
tabele.,
următoarea declarație foloseste LEFT JOIN
clauză să se alăture film
tabel cu inventory
tabel:
atunci Când un rând de film
masa nu au o potrivire rând în inventory
masă, valoarea inventory_id
coloană a acestui rând este NULL
.,
următoarea instrucțiune adaugă o clauză WHERE
pentru a găsi filmele care nu sunt în inventar:
următoarea instrucțiune returnează același rezultat., Diferența este că acesta utilizează tabelul de alias-uri pentru a face interogare mai concis:
Dacă ambele tabele au același nume de coloană utilizate în ON
clauza, puteți folosi USING
sintaxa de genul asta:
Această tehnică este utilă atunci când doriți să selectați rânduri dintr-un tabel care nu au rânduri de potrivire într-un alt tabel.