Het selecteren van data uit meerdere gekoppelde tabellen SQL 3 : JOIN Het selecteren van data uit meerdere gekoppelde tabellen
Vorige week Tabel: rijen en kolommen gevuld met ‘data’ Datatype: typologie op basis van mogelijk operaties Selecteren uit een enkele tabel ( SELECT )
Basis datatype Type informatie in een veld Bepaalt het soort operaties dat je er op kan uitvoeren. basis datatypen die in iedere database of programmeertaal op één of andere manier worden ondersteund: Numeriek Tekst Boolean Binair Datum/tijd Lange tekst
Syntax van een eenvoudige SELECT SELECT ID, naam, prijs FROM product WHERE categorie = ‘boek’ ORDER BY prijs ID naam prijs 8 groentensoep 2,15 7 appelsap 2,95 9 blik tonijn 3,15
Berekeningen in SELECT (numeriek) Selecteer de naam, prijs en prijs_plus_btw SELECT ID, naam, prijs, prijs *(1+ btw_tarief)/100 AS prijs_met_btw FROM product ID Naam prijs prijs_met_btw 1 fiets 100 120 2 brood 1 1,05 5 boek 30 36
Statistieken (aggregaties) SELECT COUNT(*) AS aantal, AVG(prijs) AS midPrijs, MAX(prijs) AS maxPrijs, MIN(prijs) AS minPrijs FROM product Aantal midPrijs maxPrijs minPrijs 9 873,10 8000 2.05
Statistieken (aggregaties) per groep SELECT categorie, COUNT(*) AS aantal, FROM product GROUP BY categorie Cat Aantal vervoer 6 Boek 3
speciaal geval: SELECT DISTINCT SELECT DISTINCT categorie FROM product categorie vervoer voedsel boek
vandaag Gegevens selecteren uit meerdere ‘gekoppelde’ tabellen. Eigenlijk heel simpel, maar je moet het effe door hebben. Vallende kwartjes
Vandaag te leren Gerelateerde tabellen Primaire Key (PK) , Foreign Key (FK) JOIN ( rijen uit verschillende tabellen selecteren en samenvoegen ) INNER JOIN Soorten relaties One-to-many One-to-one Many-to-many
Entiteiten, Attributen en Relaties Een boek is gescheven door een auteur Een student volgt een opleiding De klant doet een bestelling Een product gemaakt door een producent Meer voorbeelden? Voor iedere ‘entiteit’ een tabel
Entiteit Een op zichzelf staand ‘iets’ dat bestaat en kenmerken ( attributen ) heeft. Bijvoorbeeld: Product Producent Schrijver Boek Leerling Vak
Relatie tussen product en producent Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
SELECT uit twee gekoppelde tabellen Selecteer alle producten en koppel daar aan de naam van de producent SELECT product.*, producent.naam FROM product INNER JOIN producent ON product.producentID = producent.ID ID naam … producentID producent.Naam 3 tonijn 6 unilever 4 kip 6 unilever 5 step 4 joop’s fiets … … … …
MEER DAN twee gekoppelde tabellen SELECT product.*, producent.naam , btwtarief.percentage FROM product INNNER JOIN producent ON product.producentID = producent.ID INNER JOIN btwtarief ON product.btwtariefID = btwtarief.ID ID naam producentID producent.Naam percentage 3 tonijn 6 unilever 5 4 kip 6 unilever 5 5 step 4 joop’s fiets 20 … … … …
Verschillende soorten relaties naar kardinaliteit Many-to-one ( product -geproduceerd door> producent ) One-to-many ( klant -doet> bestelling ) Many-to-many ( bestelling –besteldproduct> product ) One-to-one ( man –isgetrouwdmet> vrouw ) Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
One-to-one relaties Wanneer gebruik je een one-to-one? Natuurlijke 1 op 1 relaties: Is_getrouwd_met Aparte tabel voor binaire of grootte data velden product.filmID = film.ID SELECT product.* , film.bindata FROM product INNER JOIN film ON product.filmID = film.ID
Many-to-many bestelling <-> product
Vandaag geleerd Gerelateerde tabellen JOIN ( tabellen samenvoegen ) Primaire Key (PK) , Foreign Key (FK) JOIN ( tabellen samenvoegen ) INNER JOIN Soorten relaties Many-to-one One-to-many One-to-one Many-to-many ( gebruik een ‘tussen tabel’ )
oefeningen DOE DE OEFENINGEN 2 DOE DE EXTRA OEFENINGEN