• No results found

Gekoppelde tabellen: de JOIN

N/A
N/A
Protected

Academic year: 2021

Share "Gekoppelde tabellen: de JOIN"

Copied!
11
0
0

Bezig met laden.... (Bekijk nu de volledige tekst)

Hele tekst

(1)

Gekoppelde tabellen: de JOIN

Huub de Beer

Eindhoven, 4 juni 2011

(2)

Koppelingstabellen en SQL: eenvoudig voorbeeld:

leerlingen en klassen

Leerling ll_nr

geb_jaar naam

woonplaats

klascode

Klas klascode mentor

afdeling zit

in klas

(3)

Voorbeeld database: leerlingen en klassen

leerling

ll_nr naam geb_jaar woonplaats klascode

23523 Marya 1994 Eindhoven 5ha

23456 Jann 1995 Veldhoven 5ha

07935 Ibraham 1995 Eindhoven 6vb

93753 Theresa 1995 Helmond 6vc

klas

klascode mentor afdeling

5ha Janssens havo

h5b Schaaf, van der havo

6va Hoop, den gym

6vb Mertens ath

6vc Jong, de ath

(4)

Informatie uit meer dan een tabel: de JOIN

I In deFROM-clausule kun je meer dan een tabel opnemen.

I Probleem: er kan onduidelijkheid bestaan over een veld: uit welke tabel komt dit veld nu (als het in meer tabellen voorkomt)

I Oplossing: schrijf de tabelnaam en een punt voor het veldnaam (vb leerling .naamipvnaam)

I Tip: introduceer een afkorting voor een tabelnaam metAS

Voorbeeld: Geef alle leerlingen en hun mentor

SELECT l.naam, k.mentor FROM leerling AS l, klas AS k;

(5)

Voorbeeld: alle leerlingen en hun mentoren

Voorbeeld: Geef alle leerlingen en hun klas

SELECT l.naam, k.klascode FROM leerling AS l, klas AS k;

Resultaattabel

l.naam k.mentor Marya Janssens Marya Schaaf, van der Marya Hoop, den Marya Mertens Marya Jong, de Jann Janssens Jann Schaaf, van der Jann Hoop, den Jann Mertens Jann Jong, de

... ...

(6)

Hoe werkt een JOIN? Het voorbeeld uitgekleed

leerling

ll_nr klascode 23523 5ha 23456 5ha 07935 6vb 93753 6vc

klas

klascode 5ha h5b 6va 6vb 6vc

JOIN leerling, vak

leerling.ll_nr leerling.klascode klas.klascode

23523 5ha 5ha

23523 5ha h5b

23523 5ha 6va

23523 5ha 6vb

23523 5ha 6vc

23456 5ha 5ha

23456 5ha h5b

23456 5ha 6va

23456 5ha 6vb

23456 5ha 6vc

07935 6vb 5ha

07935 6vb h5b

07935 6vb 6va

· · · · · · · · ·

I Een JOIN is een tabel waarin alle rijen uit alle tabellen in de JOIN met elkaar worden gecombineerd.

I Heel veel combinaties hebben geen relatie met elkaar.

I Oplossing: de conditie dat de koppelingskolommen dezelfde waarde hebben: leerling .vakcode = vak.vakcode.

(7)

Hoe werkt een JOIN? Het voorbeeld uitgekleed

leerling

ll_nr klascode 23523 5ha 23456 5ha 07935 6vb 93753 6vc

klas

klascode 5ha h5b 6va 6vb 6vc

JOIN leerling, vak

leerling.ll_nr leerling.klascode klas.klascode

23523 5ha 5ha

23523 5ha h5b

23523 5ha 6va

23523 5ha 6vb

23523 5ha 6vc

23456 5ha 5ha

23456 5ha h5b

23456 5ha 6va

23456 5ha 6vb

23456 5ha 6vc

07935 6vb 5ha

07935 6vb h5b

07935 6vb 6va

· · · · · · · · ·

I Een JOIN is een tabel waarin alle rijen uit alle tabellen in de JOIN met elkaar worden gecombineerd.

I Heel veel combinaties hebben geen relatie met elkaar.

I Oplossing: de conditie dat de koppelingskolommen dezelfde waarde hebben: leerling .vakcode = vak.vakcode.

(8)

De JOIN van leerling en vak (aangekleed)

SQL - query

SELECT l.naam, l.woonplaats, k.vakcode, k.mentor FROM leerling AS l, klas AS k

WHERE l.vakcode = k.vakcode;

Resultaat

l.naam l.woonplaats v.vakcode v.mentor

Marya Eindhoven 5ha Janssens

Jann Veldhoven 5ha Janssens

Ibraham Eindhoven 6vb Mertens

Theresa Helmond 6vc Jong, de

(9)

Geef de namen van de leerlingen waarvan de Janssens de mentor is

SQL - query

SELECT l.naam

FROM leerling AS l, klas AS k

WHERE l.vakcode = k.vakcode AND k.mentor ="Janssens";

Resultaat

l.naam Marya Jann

(10)

Geef het aantal leerlingen per mentor

SQL - query

SELECT k.mentor AS mentor, COUNT(l.ll_nr) AS aantal FROM leerling AS l, klas AS k

WHERE l.vakcode = k.vakcode GROUP BY k.mentor;

Resultaat

mentor aantal

Janssens 23

Schaaf, van der 31

Hoop, den 33

Mertens 27

Jong, de 29

(11)

Gekoppelde tabellen, enkele opmerkingen

I Je kunt zoveel tabellen koppelen in de FROM clausule als je wilt

I Als je maar elke relatie tussen tabellen aangeeft in de WHERE clausule

I De relatie is altijd

tabelA.primaire_sleutel = tabelB.vreemde_sleutel

I Sommige problemen kun je zowel oplossen met subqueries als met joins.

Referenties

GERELATEERDE DOCUMENTEN

Van de liefde die hij ademt voor Maria en Jezus, begreep ik aanvankelijk niet veel, maar naarmate ik mijn hart openstelde, begon ik toch een en ander anders aan te

Voor- taan was mijn ambitie niet meer de mu- ziek op zich, maar probeerde ik in mijn muziek uitdrukking te geven aan het tijdsgewricht waarin we

Aanvankelijk was ik wat bevreesd, maar op 2 februari 2009, twee weken voor mijn vertrek, werd pater Paolo Dall’Oglio, de stichter van de gemeenschap van Deir Mar

Thuiszitters weer naar school – Robbert uit Lochem vertelt zijn verhaal 25 Nieuwkomersonderwijs en Leerplicht in de regio 27 Nieuwkomers onderwijs – Marya en Muhaned op school

De uitvaartplechtigheid, waartoe u vriendelijk wordt uitgenodigd, zal plaatsvinden in de kerk Sint-Martinus te Burst op.. woensdag 15 mei 2019 om

en omringd door zijn familie overleden in het ASZ te Aalst op 15 februari 2019. Gesterkt door

Dan kunnen wij in deze donkere en koude dagen ook Zegen en Licht zijn voor onze naasten,. in het bijzonder voor onze medemensen

[r]