SQL Serveri LIITUMISED: tüübid koos näidetega
⚡ Nutikas kokkuvõte
SQL Serveri liitmised ühendavad kahe või enama tabeli ridu seotud veeru põhjal, kasutades liitmisi INNER, LEFT OUTER, RIGHT OUTER ja FULL OUTER, et kontrollida, millised vastavad ja millised mittevastavad read tulemuses kuvatakse.
Mis on SQL Serveri liitumised?
Andmeid saab hankida mitmest tabelist, kasutades JOIN-lauset SQL ServerJOIN ühendab kahe või enama tabeli ridu nendevahelise seotud veeru põhjal, enamasti veeru esmane võti sobitatud a-ga võõras võtiSQL Serveris on peamiselt nelja tüüpi JOIN-e:
- SISEMINE LIITUMINE / lihtne liitmine
- VASAK VÄLIMINE ÜHENDUS / VASAK ÜHENDUS
- PAREM VÄLIMINE LIITUMINE / PAREM LIITUMINE
- TÄIELIK VÄLILINE LIITUMINE
Allolev tabel võtab kokku, milliseid ridu iga JOIN tüüp tagastab:
| LIITUMISE tüüp | Tagastatud read |
| INNER JOIN | Ainult read, mille liitmistingimus mõlemas tabelis ühtib. |
| VASAKU VÄLIMISE LIITUMINE | Kõik vasakpoolse tabeli read ja vastavad parempoolse tabeli read (NULL-id, kus ükski ei vasta). |
| PAREM VÄLILINE LIITUMINE | Kõik parempoolse tabeli read ja vastavad vasakpoolse tabeli read (NULL-id, kus ükski ei vasta). |
| TÄIELIK VÄLILINE LIITUMINE | Kõik read mõlemast tabelist, NULL-väärtustega kõikjal, kus tingimus ei ole täidetud. |
Allolevates näidetes kasutatakse kahte tabelid, Õpilased ja Tasuline, liideti ühise vastuvõtuveeruga. Igas jaotises selgitatakse ühte JOIN-tüüpi koos selle süntaksi, toimiva päringu ja tulemusega.
INNER JOIN
Seda tüüpi SQL Server JOIN tagastab read kõigist tabelitest, mille puhul liitmistingimus on tõene. See kasutab järgmist süntaksit:
SELECT columns FROM table_1 INNER JOIN table_2 ON table_1.column = table_2.column;
Selle demonstreerimiseks kasutame järgmisi kahte tabelit. Allolev õpilaste tabel loetleb iga õpilase ja vastuvõtunumbri:
Allolev tasude tabel näitab iga vastuvõtunumbri tasutud summat:
Järgmine käsk demonstreerib SQL Serveris toimimist INNER JOIN näite abil:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students INNER JOIN Fee ON Students.admission = Fee.admission
Käsk tagastab järgmise tulemuse, näidates ainult mõlemas tabelis olevaid vastuvõtunumbreid:
Me näeme, millised tudengid on oma õppemaksu tasunud. Kasutasime mõlema tabeli ühiste väärtustega veergu, mis on vastuvõtu veerg.
VASAKU VÄLIMISE LIITUMINE
Seda tüüpi ühendus tagastab kõik vasakpoolse tabeli read ja parempoolse tabeli kirjed vastavate väärtustega. Näiteks:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students LEFT OUTER JOIN Fee ON Students.admission = Fee.admission
Kood tagastab järgmise tulemuse: keeping iga õpilane, isegi kui tasuandmed ei ühti:
Vastavate väärtusteta kirjed asendatakse vastavates veergudes NULL-idega.
PAREM VÄLILINE LIITUMINE
Seda tüüpi liitmine tagastab kõik parempoolse tabeli read ja ainult need, mille väärtused vastavad vasakpoolses tabelis. Näiteks:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students RIGHT OUTER JOIN Fee ON Students.admission = Fee.admission
SQL Serveri OUTER JOINS'i lause tagastab järgmise tulemuse:
Ülaltoodud väljundi põhjuseks on see, et kõik tasude tabeli read on tabelis Õpilased saadaval, kui need on vastavuses vastuvõtu veerus.
TÄIELIK VÄLILINE LIITUMINE
Seda tüüpi ühendus tagastab kõik read mõlemast tabelist, kusjuures NULL-väärtused antakse seal, kus JOIN-tingimus ei ole tõene. Näiteks:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students FULL OUTER JOIN Fee ON Students.admission = Fee.admission
Kood tagastab FULL OUTER JOIN päringute puhul järgmise tulemuse SQL, kombineerides iga rea mõlemast tabelist:







