Finde værdier, der findes i en tabel, men ikke en anden

I en database findes to tabeller, tblA og tblB. I tabellerne findes to (eller flere) felter. Et af disse felter er nøgle, et andet er et felt, Navn, med et indhold som kan gå igen i både tblA og tblB. Opgaven går nu ud på at finde alle de navne i tblA, som ikke findes i tblB. Dette kan gøres med en forholdsvis simpel forespørgsel. Problemet er typisk, at man ikke kan oprette forespørgslen ved hjælp af den grafiske brugergrænseflade, men selv må skrive forespørgslen i SQL. Forespørgslen kan se ud som følger:

SELECT tblA.* FROM tblA
LEFT JOIN tblB ON tblA.Navn = tblB.Navn
WHERE tblB.Navn IS NULL;

Forrespørgslen anvender en såkaldt ydre join; konkret en left join i modsætning til de indre joins, somofte anvendes i Access forespørgsler. En sådan Left join  returnerer alle poster fra tblA og de matchende poster fra tblB (poster som opfylder betingelsen). Da betingelsen er at feltet Navn i B skal være Null (tomt), returneret forespørgslen altså ikke de poster fra A, som også forekommer i B, mens alle andre returneres.

- Retur til Access -