Lucrul cu SQL Server exterior se alătură

în SQL Server, uneori este necesar pentru a prelua, în plus față de rândurile de potrivire, rândurile de neegalat de la unul sau ambele tabele. O astfel de operație se numește o îmbinare exterioară.exemplele 1 și 2 arată diferența dintre îmbinarea naturală și îmbinarea exterioară corespunzătoare. (Toate exemplele din această secțiune utilizează tabelul employee_enh.,)

Exemplul 1

Obțineți detalii complete despre toți angajații, inclusiv locația departamentului lor, care locuiesc și lucrează în același oraș:

rezultatul este:

rezultat set de rânduri. Dacă doriți să cunoașteți toate celelalte locuri de locuit existente ale angajaților, trebuie să utilizați join-ul exterior (stânga). Aceasta se numește o îmbinare exterioară din stânga, deoarece toate rândurile din tabelul din partea stângă a Operatorului sunt returnate, indiferent dacă au sau nu un rând de potrivire în tabelul din dreapta., Cu alte cuvinte, dacă nu există rânduri de potrivire în tabelul din partea dreaptă, îmbinarea exterioară va returna în continuare un rând din tabelul din partea stângă, cu nul în fiecare coloană a celuilalt tabel (vezi Exemplul 2). Motorul bazei de date utilizează operatorul stânga exterioară se alăture pentru a specifica stânga exterioară se alăture.

o îmbinare exterioară dreaptă este similară, dar returnează toate rândurile tabelului din dreapta simbolului. Motorul bazei de date utilizează operatorul right outer JOIN pentru a specifica the right outer join.,

EXEMPLU 2

Obține detalii complete ale tuturor angajaților, inclusiv locația de departamentul lor, pentru toate orașele care sunt fie locul de trai sau numai atât de trai și locul de muncă a angajaților:

rezultatul este:

după Cum puteți vedea, atunci când nu există nici o potrivire rând în tabelul de pe partea dreapta (departament, în acest caz), stânga exterior alătura încă se întoarce rândurile din tabelul din partea stângă (employee_enh), iar coloanele de masă sunt populate cu valori NULL., Exemplul 3 arată utilizarea operației de îmbinare exterioară dreaptă.

EXEMPLUL 3

Obține detalii complete ale tuturor departamentelor, precum și toate locuri de trai ale angajaților lor, pentru toate orașele care sunt fie locația de un departament sau de trai și locul de muncă a unui angajat:

rezultatul este:

În plus la stânga și la dreapta exterior se alătură, există, de asemenea, full outer join, care este definită ca uniune de stânga și de dreapta exterior se alătură. Cu alte cuvinte, toate rândurile din ambele tabele sunt reprezentate în setul de rezultate., Dacă nu există un rând corespunzător într-unul dintre tabele, coloanele sale sunt returnate cu valori nule. Această operație este specificată utilizând operatorul de îmbinare complet exterior.

fiecare operație de îmbinare exterioară poate fi simulată folosind operatorul Uniunii plus funcția nu există. Exemplul 4 este echivalent cu exemplul cu îmbinarea exterioară din stânga (Exemplul 2).,

EXEMPLUL 4

Obține detalii complete ale tuturor angajaților, inclusiv locația de departamentul lor, pentru toate orașele care sunt fie locul de trai sau numai atât de trai și locul de muncă a angajaților:

prima SELECTAȚI declarație în uniunea specifică join natural din tabelele employee_enh și departamentul cu join coloane domiciliul și locul de amplasare. Această declarație SELECT preia toate orașele care sunt în același timp locurile de locuit și locurile de muncă ale fiecărui angajat., A doua declarație SELECT din Uniune preia, în plus, toate rândurile din tabelul employee_enh care nu se potrivesc cu condiția în naturale se alăture.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *