SQL & Databases Les 9

1 / 23
volgende
Slide 1: Tekstslide
InformaticaMiddelbare schoolhavo, vwoLeerjaar 5

In deze les zitten 23 slides, met interactieve quizzen en tekstslides.

time-iconLesduur is: 50 min

Onderdelen in deze les

Slide 1 - Tekstslide

Vandaag
  • het koppelen van tabellen
  • JOINS
  • INNER JOIN
  • oefeningen

Slide 2 - Tekstslide

het raadplegen van meer dan één tabel
Het komt vaak voor dat in een query gegevens uit meerdere tabellen worden geselecteerd. Het is alleen mogelijk om gegevens uit meerdere tabellen te selecteren, als de primaire en vreemde sleutels van die tabellen met elkaar overeenkomen. Kort samengevat: je kunt tabellen alleen aan elkaar koppelen, als beide tabellen een gemeenschappelijke kolom hebben.

Slide 3 - Tekstslide

Joins
  • (INNER) JOIN: Toont alle rijen met overeenkomende waarden in beide tabellen
  • LEFT (OUTER) JOIN: Toont alle rijen uit de linkertabel en de overeenkomende rijen uit de rechtertabel
  • RIGHT (OUTER) JOIN: Toont alle rijen uit de rechtertabel en de overeenkomende rijen uit de linkertabel
  • FULL (OUTER) JOIN: Toont alle rijen als er een overeenkomst is in de linker- of rechtertabel

Slide 4 - Tekstslide

Met het SQL-statement INNER JOIN kun je een extra tabel bij de SQL-query betrekken. Deze extra tabel 'koppel' je op basis van de primaire en vreemde sleutel in beide tabellen (ON in de SQL-query). Je kunt meerdere extra tabellen bij het resultaat betrekken, zolang de primaire en vreemde sleutels maar overeenkomen.

Slide 5 - Tekstslide

Zowel in de tabel klant als in de tabel bestelling is een kolom met de naam id. Stel dat je één van deze kolommen wilt selecteren bij SELECT of gebruiken in een WHERE-voorwaarde. Dan moet je opgeven uit welke tabel die kolom komt. Tussen de tabelnaam en de kolomnaam plaats je een punt(.).

Slide 6 - Tekstslide

INNER JOIN
INNER JOIN selecteert alle rijen uit beide tabellen zolang er een overeenkomst is tussen de kolommen. Als er rijen zijn in de tabel "Bestelling" die geen overeenkomsten hebben in "Klant", worden deze bestellingen niet weergegeven!

Slide 7 - Tekstslide

voorbeeld
Daniël heeft al een aantal keer besteld bij het restaurant. In de app kan hij zijn bestelgeschiedenis zien. Voor dit overzicht worden er twee tabellen aan elkaar gekoppeld. In de tabel met klantgegevens staan zijn eigen gegevens en in de tabel bestelling staan zijn bestellingen.

Slide 8 - Tekstslide

query

Slide 9 - Open vraag

De query die voor de bestelgeschiedenis gebruikt wordt, zou kunnen zijn:

Slide 10 - Tekstslide

resultaat

Slide 11 - Tekstslide

Geef een overzicht van de bestelnummers en datum/tijdstippen van de bestellingen die gedaan zijn door de klant met het e-mailadres "fiorella_hoekstra@gomail.nl".

Slide 12 - Open vraag

SELECT bestelling.id, datum, tijd
FROM klant
INNER JOIN bestelling ON bestelling.klant_id = klant.id
WHERE emailadres = "fiorella_hoekstra@gomail.nl"

Slide 13 - Tekstslide

Geef een overzicht van de bestelnummers van de bestellingen waarbij er 'Apple Slices' zijn besteld.

Slide 14 - Open vraag

SELECT bestelling_id
FROM product
INNER JOIN bestelregel ON bestelregel.product_id = product.id
WHERE naam = "Apple Slices"

Slide 15 - Tekstslide

Voorbeeld
Pedro werkt in de keuken van het restaurant. Hij wil de bestelling met nummer 47 klaar gaan maken. Hij moet dan weten welke producten en aantallen er bij deze bestelling horen.

Slide 16 - Tekstslide

Maak de query van Pedro

Slide 17 - Open vraag

Slide 18 - Tekstslide

Met dit overzicht kan Pedro nog niet veel. Aan alleen productnummers heeft hij niets. Er moet nog een tabel bij het overzicht betrokken worden, namelijk de tabel product. In de tabel bestelregel staat de kolom product_id, dit is ook een vreemde sleutel. De bijbehorende primaire sleutel is de kolom id in de tabel product. De tabel bestelregel kan dus gekoppeld worden aan de tabel product.

Slide 19 - Tekstslide

Slide 20 - Tekstslide

Geef een overzicht van de namen van alle producten die op 4 oktober 2014 zijn besteld.

Slide 21 - Open vraag

SELECT naam
FROM product
INNER JOIN bestelregel ON bestelregel.product_id = product.id
INNER JOIN bestelling ON bestelling.id = bestelregel.bestelling_id
WHERE datum = "2014-10-04"

Slide 22 - Tekstslide

Volgende les

  • Functies en keywords

Slide 23 - Tekstslide