Professional Documents
Culture Documents
Week 3 - Inner Joins v3
Week 3 - Inner Joins v3
DATABASES 1
Week 3
Databases 1 31-12-22
Leerdoelen
• Aan het EER zien welke tabellen een relatie met elkaar hebben
• Uitleggen wat Primary Keys en Foreign Keys zijn
• Een query schrijven met een CROSS JOIN
• Een query schrijven met een INNER JOIN
• Meerdere verschillende schrijfwijzen gebruiken voor INNER JOINs
• Een query schrijven waar meer dan twee tabellen met een JOIN
aan elkaar gekoppeld worden
Databases 1 31-12-22 |3
Vorige week
Databases 1 31-12-22 |4
Opdrachten?
Databases 1 31-12-22 |5
Opdracht 1.6
ET Electrotechniek
…… …..
Databases 1 31-12-22 |6
EER lezen deel 1
Sleutels & Relaties
Databases 1 31-12-22 |7
studentactiviteiten EER
Databases 1 31-12-22 |8
EER?
Databases 1 31-12-22 |9
JOIN op welke tabellen?
Databases 1 31-12-22 | 10
Hoe zijn tabellen
verbonden?
PRIMARY
KEY
FOREIGN
KEY
Databases 1 31-12-22 | 11
PRIMARY KEY EER symbool
Databases 1 31-12-22 | 12
PRIMARY KEY betekenis
Databases 1 31-12-22 | 13
Vraag
Antwoord:
NEE!
Alleen de voornaam is PK en die velden moeten dus uniek zijn.
Databases 1 31-12-22 | 14
FOREIGN KEY EER symbool
Databases 1 31-12-22 | 15
FOREIGN KEY betekenis
FOREIGN KEY:
• Mag (in sommige gevallen) NULL zijn
• Dezelfde PK mag meerdere keren in zijn FK voorkomen
• Er kan nooit iets in de FK ingevuld zijn dat niet bestaat als PK in
de tabel waarnaar de FK refereert.
– Daar zorgt de database voor
Databases 1 31-12-22 | 16
FOREIGN KEY voorbeeld
Databases 1 31-12-22 | 17
Vraag
Antwoord:
Ja!
Dezelfde postcode mag meerdere keer voorkomen en kan leeg
zijn.
Databases 1 31-12-22 | 18
Meerdere FOREIGN KEYs
Databases 1 31-12-22 | 20
Eén PK met meerdere
velden
Databases 1 31-12-22 | 21
PK met meerdere velden
voorbeeld (1)
De tabel reis heeft één primary key die bestaat uit twee velden.
Databases 1 31-12-22 | 22
PK met meerdere velden
voorbeeld (2)
maatschappij Nummer
Spavans 1
Spavans 2
New Frontier 1
Databases 1 31-12-22 | 23
Vraag
Antwoord:
1
Databases 1 31-12-22 | 24
FK als PK
Databases 1 31-12-22 | 25
FK als PK voorbeeld
Databases 1 31-12-22 | 26
PK en FK naamgeving
Databases 1 31-12-22 | 28
CROSS JOIN
Plak achter elke rij van de ene tabel elke rij van de andere
tabel.
Schrijfwijze:
SELECT * FROM opleiding CROSS JOIN student;
SELECT * FROM opleiding JOIN student;
Databases 1 31-12-22 | 29
Voorbeeld CROSS JOIN(1)
Tabel: Opleiding
OPLCODE OMSCHRIJVING ACADEMIE
IN Informatica AII
BK Bouwkunde ABCT
Tabel: Student
STUDENTNR NAAM OPLCODE
1 Kees de Vries IN
2 Jan de Wit IN
3 Koos Tomeloos BK
Databases 1 31-12-22 | 30
Voorbeeld CROSS JOIN(2)
Resultaat:
OPL- OMSCHRIJ- ACA- STUDENT- NAAM OPL-
CODE VING DEMIE NR CODE
IN Informatica AII 1 Kees de Vries IN
IN Informatica AII 2 Jan de Wit IN
IN Informatica AII 3 Koos Tomeloos BK
BK Bouwkunde ABCT 1 Kees de Vries IN
BK Bouwkunde ABCT 2 Jan de Wit IN
BK Bouwkunde ABCT 3 Koos Tomeloos BK
Elke rij uit de student tabel is achter iedere rij uit de opleiding tabel
geplakt.
Databases 1 31-12-22 | 31
CROSS JOIN resultaat
Hij maakt echter wel duidelijker wat er gebeurt als we een INNER
JOIN gebruiken.
Databases 1 31-12-22 | 32
Vraag
Antwoord:
60 = 10 * 6
Databases 1 31-12-22 | 33
INNER JOIN
Databases 1 31-12-22 | 34
INNER JOIN
Schrijfwijze:
SELECT * FROM opleiding INNER JOIN student
ON opleiding.oplcode = student.oplcode;
Databases 1 31-12-22 | 35
Voorbeeld INNER JOIN(1)
Resultaat:
OPL- OMSCHRIJ- ACA- STUDENT- NAAM OPL-
CODE VING DEMIE NR CODE
IN Informatica AII 1 Kees de Vries IN
IN Informatica AII 2 Jan de Wit IN
IN Informatica AII 3 Koos Tomeloos BK
BK Bouwkunde ABCT 1 Kees de Vries IN
BK Bouwkunde ABCT 2 Jan de Wit IN
BK Bouwkunde ABCT 3 Koos Tomeloos BK
Databases 1 31-12-22 | 36
Voorbeeld INNER JOIN(2)
Databases 1 31-12-22 | 37
Voorbeeld INNER JOIN(3)
Databases 1 31-12-22 | 38
JOIN welke tabellen?
Een relatie geeft immers aan dat er een bij elkaar horend FK en PK
paar is.
Databases 1 31-12-22 | 39
Vraag
Antwoord:
ON inschrijving.planningsnr = planning.planningsnr;
Databases 1 31-12-22 | 40
SELECT bij INNER JOIN
Dus:
SELECT opleiding.oplcode FROM opleiding JOIN student
ON opleiding.oplcode = student.oplcode;
Databases 1 31-12-22 | 41
Alternatief voor ON
In plaats van:
SELECT * FROM opleiding JOIN student
ON opleiding.oplcode = student.oplcode;
Databases 1 31-12-22 | 42
JOIN multiple tables
Bijvoorbeeld:
SELECT * FROM
opleiding JOIN student
ON opleiding.oplcode = student.oplcode
JOIN belangstelling
ON belangstelling.studentnr = student.studentnr;
Databases 1 31-12-22 | 43
JOIN multiple field PK
Indien een PK uit meerdere velden bestaat (en dus ook de FK)
wordt deze op de volgende manier geJOINed:
SELECT * FROM
instrument AS i JOIN stukinstrument AS s
ON i.instrumentnaam = s.instrumentnaam
AND i.toonhoogte = s.toonhoogte;
Databases 1 31-12-22 | 44
Vragen?
Databases 1 31-12-22 | 45