SQL 3 : JOIN Het selecteren van data uit meerdere gekoppelde tabellen.

Post on 08-Jun-2015

213 views 0 download

Transcript of SQL 3 : JOIN 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 SELECTSELECT ID, naam, prijs

FROM productWHERE categorie = ‘boek’ORDER BY prijs

ID naam prijs8 groentensoep 2,157 appelsap 2,959 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_btwFROM product

ID Naam prijs prijs_met_btw1 fiets 100 1202 brood 1 1,055 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 minPrijs9 873,10 8000 2.05

STATISTIEKEN (AGGREGATIES) PER GROEPSELECT

categorie,COUNT(*) AS aantal, FROM product

GROUP BY categorie

Cat Aantal

vervoer 6

Boek 3

SPECIAAL GEVAL:SELECT DISTINCTSELECT DISTINCT categorie

FROM product

categorievervoervoedselboek

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 auteurEen student volgt een opleidingDe klant doet een bestellingEen 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:

ProductProducentSchrijverBoekLeerlingVak

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

IDnaam … producentID producent.Naam3 tonijn 6 unilever4 kip 6 unilever5 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.IDINNER JOIN btwtarief

ON product.btwtariefID = btwtarief.ID

IDnaam producentID producent.Naam percentage3 tonijn 6 unilever 54 kip 6 unilever 55 step 4 joop’s fiets 20 … … … …

VERSCHILLENDE SOORTEN RELATIES NAAR KARDINALITEITMany-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.bindataFROM product INNER JOIN film ON product.filmID = film.ID

MANY-TO-MANYBESTELLING <-> PRODUCT

VANDAAG GELEERD

Gerelateerde tabellen• 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