Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdLaurens Wauters Laatst gewijzigd meer dan 10 jaar geleden
1
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl SQL 3 : JOIN Het selecteren van data uit gekoppelde tabellen
2
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl Vorige week Tabel: rijen en kolommen gevuld met ‘data’ Datatype: typologie op basis van mogelijk operaties Selecteren uit een enkele tabel ( SELECT )
3
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl 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
4
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl Syntax van een eenvoudige SELECT SELECT ID, naam, prijs FROM product WHERE categorie = ‘boek’ ORDER BY prijs IDnaamprijs 8groentensoep2,15 7appelsap2,95 9blik tonijn3,15
5
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl Berekeningen in SELECT (numeriek) Selecteer de naam, prijs en prijs_plus_btw SELECT ID, naam, prijs, prijs + prijs* btw_tarief/100 AS prijs_met_btw FROM product IDNaamprijsprijs_met_btw 1fiets100120 2brood11,05 5boek3036
6
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl 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,1080002.05
7
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl Statistieken (aggregaties) per groep SELECT categorie, COUNT(*) AS aantal, AVG(prijs) AS midPrijs, MAX(prijs) AS maxPrijs, MIN(prijs) AS minPrijs FROM product GROUP BY categorie Cat Aantal midPrijs maxPrijs minPrijs vervoer 6 118880002.05 boek 3 20,704010
8
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 DISTINCT SELECT DISTINCT categorie FROM product categorie vervoer voedsel boek Dit is hetzelfde als: SELECT categorie FROM product GROUP BY categorie
9
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl En.. Hoe ging het huiswerk?
10
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl vandaag Gegevens selecteren uit meerdere ‘gekoppelde’ tabellen. Eigenlijk heel simpel, maar je moet het effe door hebben.
11
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl Vandaag te leren Gerelateerde tabellen Primaire Key (PK), Foreign Key (FK) JOIN ( rijen uit verschillende tabellen samenvoegen ) LEFT JOIN RIGHT JOIN INNER JOIN Soorten relaties Many-to-one One-to-many One-to-one Many-to-many
12
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl 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 http://nl.wikipedia.org/wiki/Entiteit
13
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl Entiteit Een op zichzelf staand ‘iets’ dat bestaat en kenmerken heeft. Bijvoorbeeld: Product Producent Schrijver Boek Leerling Vak Bestelling Opleiding
14
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl Relatie tussen product en producent Foreign Key (FK)Primairy Key (PK)
15
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
16
Relatie tussen product en producent
17
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl Gekoppelde tabellen
18
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl Verschillende soorten relaties naar kwantiteit Many-to-one ( product -geproduceerd door> producent ) One-to-many ( klant -doet> bestelling ) One-to-one ( man –isgetrouwdmet> vrouw ) Many-to-many ( bestelling –besteldproduct> product )
19
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl JOIN: SELECT uit twee gekoppelde tabellen Selecteer alle producten en koppel daar aan de naam van de producent SELECT product.*, producent.naam FROM product, producent WHERE product.producentID = producent.ID IDnaam…producentIDproducent.Naam 3tonijn6unilever 4kip6unilever 5step4joop’s fiets …………
20
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl JOIN: SELECT uit twee gekoppelde tabellen Selecteer alle producten en koppel daar aan de naam van de producent SELECT product.* FROM product IDnaam…producentID 3tonijn6 4kip6 5step4 ………
21
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl JOIN: SELECT uit twee gekoppelde tabellen Selecteer alle producten en koppel daar aan de naam van de producent SELECT product.*, producent.naam FROM product JOIN producent ON product.producentID = producent.ID IDnaam…producentIDproducent.Naam 3tonijn6unilever 4kip6unilever 5step4joop’s fiets …………
22
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl JOIN: SELECT uit twee gekoppelde tabellen Selecteer alle producten en koppel daar aan de naam van de producent en het btw tarief SELECT product.*, producent.naam, btwtarief.percentage FROM product JOIN producent ON product.producentID = producent.ID JOIN btwtarief ON product.btwtariefID = btwtarief.ID IDnaamproducentIDproducent.Naam percentage 3tonijn 6unilever5 4kip6unilever 5 5step4joop’s fiets 20 …………
23
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl Drie soorten koppelingen LEFT OUTER JOIN RIGHT OUTER JOIN INNER JOIN Opdracht voor gevorderden: Leg aan beginners uit wat het verschil is tussen deze soorten joins. Geef voorbeelden.
24
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl En verder... De sheets hierna gaan over de subtiele verschillen tussen de verschillende soorten JOINS ( INNER, LEFT, RIGHT ). Dat heeft pas betekenis als je de JOIN begrijpt en kan toepassen
25
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl LEFT JOIN Alle rijen uit de linker tabel, plus de gekoppelde rijen uit de rechter tabel SELECT product.*, producent.naam AS producentNaam FROM product LEFT JOIN producent ON product.producentID = producent.ID IDnaam…producentIDproducentNaam 3tonijn6unilever 5step4joop’s fiets 10Karel en…NULLNULL
26
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl RIGHT JOIN Alle rijen uit de rechter tabel, plus de gekoppelde rijen uit de linker tabel SELECT product.*, producent.naam AS producentNaam FROM product RIGHT JOIN producent ON product.producentID = producent.ID IDnaam…producentIDproducentNaam 3tonijn6unilever 5step4joop’s fiets NULLNULL9Amalia
27
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl INNER JOIN Alleen rijen die aan elkaar gekoppeld zijn. SELECT product.*, producent.naam AS producentNaam FROM product INNER JOIN producent ON product.producentID = producent.ID IDnaam…producentIDproducentNaam 3tonijn6unilever 5step4joop’s fiets
28
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl INNER JOIN (alternatief) Een andere manier om een inner join te maken. SELECT product.*, producent.naam AS producentNaam FROM product, producent WHERE product.producentID = producent.ID IDnaam…producentIDproducentNaam 3tonijn6unilever 5step4joop’s fiets
29
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl FULL OUTER JOIN Alle rijen uit zowel de linker als de rechter tabel. Ook als er geen koppeling is. SELECT product.*, producent.naam AS producentNaam FROM product FULL OUTER JOIN producent ON product.producentID = producent.ID IDnaam…producentIDproducentNaam 3tonijn6unilever 5step4joop’s fiets NULLNULL9Amalia 10Karel en…NULLNULL
30
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl 90% van de koppelingen: ‘LEFT JOIN’ Selecteer data uit een primaire tabel en koppel data uit gerelateerde tabellen Bijvalle data uit ‘product’ en koppel de producentnaam. SELECT product.*, producent.naam, producent.info FROM product LEFT JOIN producent ON product.producentID = producent.ID SELECT primaire_tabel.* gerelateerdetabel.* FROM primaire_tabel LEFT JOIN gerelateerde_tabel ON primaire_tabel.FK = gerelateerde_tabel.PK
31
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl Vele wegen naar rome SELECT product.*, producent.naam AS producentNaam FROM product LEFT JOIN producent ON product.producentID = producent.ID SELECT product.*, producent.naam AS producentNaam FROM producent RIGHT JOIN product ON product.producentID = producent.ID
32
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl Meerdere gerelateerde tabellen SELECT product.*, producent.naam, categorie.naam, btwtarief.percentage FROM product LEFT JOIN producent ON product.producentID = producent.ID LEFT JOIN categorie ON product.categorieID = categorie.ID LEFT JOIN btwtarief ON product.btwtariefID = btwtarief.ID
33
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl Verschillende soorten relaties naar kwantiteit 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 )
34
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 LEFT JOIN film ON product.filmID = film.ID
35
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl Many-to-many bestelling product Een aparte tabel met bestellingID-productID paren
36
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl Selecteren via relaties Selecteer alle klanten die een bepaald product hebben besteld.
37
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl Stap 1: SELECT en JOIN de tabellen: SELECT klant.* FROM klant JOIN bestelling JOIN bestelling_product JOIN product WHERE product.ID = 21
38
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl Stap 1: SELECT en JOIN de tabellen (en vergeet niet de criteria voor deze relaties erbij te vertellen): SELECT klant.* FROM klant JOIN bestelling ON klant.ID = bestelling.klantID JOIN bestelling_product ON bestelling.ID=bestelling_product.bestellingID JOIN product ON bestelling_product.productID = product.ID WHERE product.ID = 21
39
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl Many-to-many Selecteer van een bestelling alle producten SELECT product.ID, product.naam, product.prijs, bestelling_product.aantal FROM bestelling_product INNER JOIN product ON bestelling_product.productID = product.ID WHERE bestelling_product.bestellingID = 1 AantalIDnaamprijs 301Toveren…20 2 3SQL…23
40
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl Many-to-many van product naar bestelling Selecteer van een product alle bestellingen SELECT bestelling_product.aantal, bestelling.datum, klant.naam FROM ( bestelling_product INNER JOIN bestelling ON bestelling_product.bestellingID = bestelling.ID) INNER JOIN klant ON bestelling.klantID= klant.ID WHERE bestelling_product.productID = 1 Aantaldatumnaam 301-9-2003Bos 46-12-2003Graaf
41
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
42
V2-projecten database
43
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl Vandaag geleerd Gerelateerde tabellen Primaire Key (PK), Foreign Key (FK) JOIN ( tabellen samenvoegen ) LEFT JOIN RIGHT JOIN INNER JOIN Soorten relaties Many-to-one One-to-many One-to-one Many-to-many ( gebruik een ‘tussen tabel’ )
44
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl oefeningen Doe de oefeningen 2
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.