Tavallinen liitos ei anna lopputulokseen mukaan sellaisia kenttiä, joille ei löydy vastinparia toisesta taulusta. Ulkoliitos antaa myös vastinparittomat tietueet. SQL-92 tukee suoraan ulkoliitosta. Vanhemmissa ohjelmistoissa ulkoliitos on tehtävä alikyselyn avulla. OUTER JOIN -sanojen eteen liitetään joko LEFT tai RIGHT sen mukaan kummalta puolelta liitosta otetaan mukaan koko joukko.
/* Toteutetaan ulkoliitos SQL-92:en mukaan. Kaikkien opiskelijoiden tenttisuoritukset, myös niiden tiedot jotka eivät ole tehneet yhtään tenttiä */
SELECT sukunimi, etunimi, kurssitunnus, arvosana
FROM Oppilaat AS O LEFT OUTER JOIN Tentit AS T
ON O.sotu = T.sotu
|
sukunimi |
etunimi |
kurssitunnus |
arvosana |
|
Meikäläinen |
Masa |
TIE001 |
3 |
|
Meikäläinen |
Masa |
TIE110 |
1,75 |
|
Meikäläinen |
Masa |
TIE160 |
1 |
|
Meikäläinen |
Masa |
TIE110 |
0 |
|
Meikäläinen |
Masa |
TIE110 |
1 |
|
Wanha |
Gubbe |
||
|
Wanha |
Gubbe |
TIE160 |
2,25 |
|
Heinonen |
Petri |
||
|
Vilkas |
Ville |
TIE150 |
1 |
|
Lahtonen |
Tommi |
TIE001 |
0 |
|
Meikäläinen |
Maija |
TIE140 |
3 |
|
Meikäläinen |
Maija |
TIE110 |
0 |
/* Toteutuetaan sama haku kuin edellä "vanhanaikaisena versiona" yhdistettä ja alikyselyä käyttäen.*/
SELECT sukunimi, etunimi, kurssitunnus, arvosana
FROM Oppilaat AS O, Tentit AS T
WHERE O.sotu = T.sotu
UNION
SELECT sukunimi, etunimi, '', ''
FROM Oppilaat O
WHERE O.sotu NOT IN
(SELECT sotu
FROM Tentit)
ORDER BY sukunimi