ULKOLIITOS (OUTER JOIN)

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