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

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

SQL 3 : JOIN

Het selecteren van data uit meerdere gekoppelde tabellen

Page 2: 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 )

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

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

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

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

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

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

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

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

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

STATISTIEKEN (AGGREGATIES) PER GROEPSELECT

categorie,COUNT(*) AS aantal, FROM product

GROUP BY categorie

Cat Aantal

vervoer 6

Boek 3

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

SPECIAAL GEVAL:SELECT DISTINCTSELECT DISTINCT categorie

FROM product

categorievervoervoedselboek

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

VANDAAG

Gegevens selecteren uit meerdere ‘gekoppelde’ tabellen.

Eigenlijk heel simpel, maar je moet het effe door hebben.

Vallende kwartjes

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

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

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

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

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

ENTITEIT

Een op zichzelf staand ‘iets’ dat bestaat en kenmerken ( attributen ) heeft.

Bijvoorbeeld:

ProductProducentSchrijverBoekLeerlingVak

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

RELATIE TUSSEN PRODUCT EN PRODUCENT

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl

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

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… … … …

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

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 … … … …

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

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 - [email protected] - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl

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

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

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

MANY-TO-MANYBESTELLING <-> PRODUCT

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

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’ )

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

OEFENINGEN

DOE DE OEFENINGEN 2

DOE DE EXTRA OEFENINGEN

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