De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -

Verwante presentaties


Presentatie over: "Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -"— Transcript van de presentatie:

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


Download ppt "Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -"

Verwante presentaties


Ads door Google