Skip to main content

Joins (les 2, periode 2)

In deze les leer je hoe je de gegevens uit twee tabellen uit de deatabase kunt combineren

Uitleg

In een relationele database zitten meerdere tabellen en met behulp van relaties kun je deze gegevens combineren. In deze les leren we op een hele eenovdige manier hoe je dat kunt doen.

Stel je hebt twee tabellen: persoon en stad.

De tabel persoon bestaat uit 4 rows en 5 kolommen.

ID voornaam achternaam stad
1 Jane Collinson 101
2 Mohamed Lisram 103
3 Leo Thompson 101
4 Montano Drew 104
5 Greg Lewinky 105

De tabel stad bestaat uit 5 rows en 2 kolommen

ID naam
101 Amsterdam
102 Diemen
103 Abcoude
105 Utrecht
106 Bovenkerk

Vraag 1: weet jij waar Jane Collinson woont (goed kijken)?

Als je ziet waar Jane woont dan heb je waarschijnlijk gezien dat de kolom stad uit de tabel persoon verwijst naar de kolom ID uit de tabel stad. Of in het kort:

persoon.stad = stad.ID

Primary Key en Foreign Key

De kolom persoon.stad verwijst naar een andere tabel dat heet een foreign key (vreemde key, een key van een andere tabel).

De kolom ID in de tabel stad is een primary key. Een hoofd sleutel. Een primary key heeft voor elke regel een unieke waarde en je kan er dus altijd precies één rij mee aanwijzen.

Een foreign key verwijst naar een aan andere primary key maar hoeft niet uniek te zijn. Kijk maar in het voorbeeld, Jane en Leo wonen allebij in stad 101 (Amsterdam) en hebben dus dezelfde foreigen key.

Opdracht (in de les)

Maak een nieuwe database aan in phpmyadmin en noem de database persoon.

We gaan nu een database en twee tabellen maken in phpmyadmin.

  1. Download het bestandje persoon.sql aan de linkerkant van deze pagina.
  2. Start XAMPP (Apache en MySQL).
  3. Kies in het linker gedeelte 'new' om een nieuwe database aan te maken.
  4. Maak een database met de naam persoon aan.
  5. Ga naar het tabje import en selecteer browse; ga naar het bestand persoon.sql en importeer deze.

(optioneel) Als je wilt kun je de tabellen ook handmatig aanmaken. Je moet daarvoor de volgende twee tabellen maken:

  1. persoon met de kolommen ID (integer), voornaam (varchar(80)), achternaam (varchar(80)), en stad (integer)
  2. stad met de kolommen ID (integer) en naam (varchar(80)).
  3. vul de tabellen nu met de waarden zoals hierboven aangegeven.

Voer nu de volgende query uit:

SELECT *
FROM persoon
JOIN stad
ON persoon.stad = stad.id

Opdracht (huiswerk)

Start XAMPP (Apache en SQL server) en ga naar phpmysql http://localhost/phpmyadmin/. Ga naar de database persoon (linkerkant van scherm) en ga naar het tabje SQL.

Tip: voor opgave 4 t/m 8 moet je een join gebruiken.

  1. Maak een query die alle plaatsnamen uit de database (persoon) laat zien.
    Schrijf de query op je antwoordenblad.

  2. Maak een query die alle voornamen en achternamen van alle personen uit de database afdrukt.
    Schrijf de query op je antwoordenblad.

  3. Maak een query die alle voornamen en achternamen laat zien van alle personen waarvan de voornaam met een M begint.
    Schrijf de query op je antwoordenblad.

  4. Maak een query van alle voornamen en achternamen en woonplaatsen van alle personen uit de database.
    Schrijf de query op je antwoordenblad.

  5. Maak een query die alle voornamen afdrukt van alle personen uit Amsterdam.
    Zoek op op welke kolomnaam je moet zoeken; waar vind je de plaatsnaam en hoe heet die? Let ook op dat Amsterdam in de database met een kleine letter begint.
    Schrijf de query op je antwoordenblad.

  6. Maak een query die alle voornamen en achternamen afdrukt van alle personen uit Abcoude.
    Schrijf de query op je antwoordenblad.

  7. Maak een query die telt hoeveel personen er uit Amsterdam komen.
    Schrijf de query op je antwoordenblad.

  8. Maak een query die telt hoeveel personen er uit Amsterdam of Diemen komen.
    Schrijf de query op je antwoordenblad.

--