Met deze instructie worden in het resultaat ook de records getoond die geen overeenkomstige waarde hebben in de gerelateerde tabellen.
Er bestaat een RIGHT OUTER JOIN en een LEFT OUTER JOIN.
De syntax is als volgt:
SELECT tabelnaam1.kolomnaam1 (, tabelnaam1.kolomnaam2,...), tabelnaam2.kolomnaam1 (, tabelnaam2.kolomnaam2,...), ...
FROM tabelnaam1
RIGHT OUTER JOIN tabelnaam2
ON (tabelnaam1.kolomnaamx = tabelnaam2.kolomnaamy)
WHERE ...;
Bij RIGHT OUTER JOIN worden alle records van tabelnaam2 opgenomen, zelfs indien ze geen overeenkomstige records hebben in tabelnaam1.
Voorbeeld:
We willen alle leveranciers laten zien (ook diegenen die geen wijnen leveren) met de wijnen die ze leveren. Als een leverancier geen wijn levert komt er dus niets naast de naam van de leverancier maar wordt de leverancier wel weergegeven.
**SELECT artom, naam
FROM tblWijnen
RIGHT OUTER JOIN tblLeveranciers
ON (tblWijnen.leverancier = tblLeveranciers.leveranciersnummer);**
In dit voorbeeld worden dus alle leveranciers opgenomen, zelfs indien ze geen wijnen leveren, met naast hun naam de naam van de wijn die ze leveren.
De syntax is als volgt:
SELECT tabelnaam1.kolomnaam1 (, tabelnaam1.kolomnaam2,...), tabelnaam2.kolomnaam1 (, tabelnaam2.kolomnaam2,...),...
FROM tabelnaam1
LEFT OUTER JOIN tabelnaam2
ON (tabelnaam1.kolomnaamx = tabelnaam2.kolomnaamy)
WHERE ...;
Bij LEFT OUTER JOIN worden alle records van tabelnaam1 opgenomen, zelfs indien ze geen overeenkomstige records hebben in tabelnaam2.
Voorbeeld:
**SELECT artom, naam
FROM tblWijnen
LEFT OUTER JOIN tblLeveranciers
ON (tblWijnen.leverancier = tblLeveranciers.leveranciersnummer);**
In dit voorbeeld worden dus alle wijnen opgenomen, zelfs indien ze geen bijhorende leverancier hebben, met naast hun omschrijving de naam van de leverancier.