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

Slides:



Advertisements
Verwante presentaties
SQL deel 2: datamodel ontwerp
Advertisements

Module 7 – Hoofdstuk 5 (1) SQL – een begin.
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Meerdere tabellen: Relaties en Joins
Module 7 – Hoofdstuk 5 (4) SQL – voorwaarden aan groepen en meerdere tabellen.
HALLO OPLETTEN : Waarom sql DOEN : Introductie opdracht
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Het selecteren van data uit meerdere gekoppelde tabellen
SQL Les 01 & 02. SELECT Weergeven van alle gegevens uit een tabel: SELECT * FROM tlbPersonen; Weergeven van alle personen die uit Aruba komen: SELECT.
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Inleiding Social Software Pierre Gorissen Fontys Hogescholen
Computervaardigheden en Programmatie Universiteit AntwerpenDatabank - Gevorderden 5.1 Computervaardigheden en Programmatie 1rste BAC Toegepaste Biologische.
Computervaardigheden en Programmatie Universiteit AntwerpenDatabank - Basis 4.1 Computervaardigheden en Programmatie 1rste BAC Toegepaste Biologische Wetenschappen.
ontwerp een datamodel Criteria voor een goed model Ontwerppatronen
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Download en installeer de gereedschappen
Download en installeer de gereedschappen
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
ontwerp een datamodel Criteria voor een goed model Ontwerppatronen
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
HALLO OPLETTEN : Waarom sql DOEN : Introductie opdracht
Vorige week: Referentiele integriteit
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
SQL (structured Query Language) DDL (Data Definition Language) DML (Data Manipulation Language) Ontwerp databaseBevraag database.
Workshop PHP Een productencatalogus Met database.
Statistische functies (aggregaatfuncties)
Laat software voor je werken
SQL ( SERVER ) Les #02: T-SQL. A GENDA Herhaling les 4 Views SELECT…INTO Beheren van tabellen: CREATE ALTER DROP Opdracht voor de volgende les.
LauwersCollege Buitenpost Informatica
Computervaardigheden Hoofdstuk 4 — Databank (Basis)
7 Databases. STRUCTURED QUERY LANGUAGE Bij het relationele model hoort een programmeertaal waarmee de database benaderd kan worden. In de praktijk wordt.
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
24/04/2015IT-Assurance1 IT-Assurance deeltijd 4. Inleiding SQL Introductie in de basisfuncties Bijbehorend lesmateriaal: -AIV-boek van Derksen en Crins.
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Les 0 Structured Query Language SQL. Programma Les 0 – Introductieopdracht Les 1 Les 2 Les 3 Schriftelijke toets.
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
Analyse 3 INFANL01-3 week 2 CMI Informatica.
ANALYSE 3 INFANL01-3 WEEK 8 CMI Informatica. ANALYSE 3- INFANL01-3 ▸ Vorige les ▸ Herhaling ▸ Normaliseerregels ▸ Omzetten ERD ▸ Group by en SET ▸ Proeftentamen.
Week 2 BIMAIV03 Les A3. DISTINCT (1) Van welke uitgevers staan er boeken in deze tabel? BOEKNRTITELUITGEVERPRIJS Word in twaalf dagenMEU€ 22,50.
ANALYSE 3 INFANL01-3 WEEK 6 CMI Informatica. ANALYSE 3- INFANL01-3 ▸ Vorige les ▸ Subqueries met correlaties ▸ Subqueries zonder correlaties ▸ Views ▸
Wat is SQL (1)? SQL (Structured Query Language):  is een zeer krachtige taal met een beperkt vocabulaire (aantal ‘woorden’)  is declaratief (‘WAT’ niet.
– Software development fundamentals
Informatie-analyse 1: Er zijn veel manieren om een database te vullen
SQL Les February 2019.
SQL Les 3 17 February 2019.
SQL Les 3 23 February 2019.
SQL Les 7 24 February 2019.
SQL Les 9 12 May 2019.
SQL Les 4 12 May 2019.
– Software development fundamentals
SQL Les May 2019.
Databases SQL.
Transcript van de presentatie:

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese SQL 3 : JOIN Het selecteren van data uit gekoppelde tabellen

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese Vorige week  Tabel: rijen en kolommen gevuld met ‘data’  Datatype: typologie op basis van mogelijk operaties  Selecteren uit een enkele tabel ( SELECT )

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese 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

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese 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

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese 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 1fiets brood11,05 5boek3036

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese 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,

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese 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  boek 3 20,704010

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese SELECT DISTINCT  SELECT DISTINCT categorie FROM product  categorie vervoer voedsel boek Dit is hetzelfde als:  SELECT categorie FROM product GROUP BY categorie

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese En..  Hoe ging het huiswerk?

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese vandaag  Gegevens selecteren uit meerdere ‘gekoppelde’ tabellen.  Eigenlijk heel simpel, maar je moet het effe door hebben.

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese 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

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese 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

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese Entiteit Een op zichzelf staand ‘iets’ dat bestaat en kenmerken heeft. Bijvoorbeeld:  Product  Producent  Schrijver  Boek  Leerling  Vak  Bestelling  Opleiding

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese Relatie tussen product en producent Foreign Key (FK)Primairy Key (PK)

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

Relatie tussen product en producent

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

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese 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 )

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese 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 …………

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese 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 ………

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese 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 …………

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese 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 …………

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese 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.

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese 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

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese 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

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese 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

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese 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

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese 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

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese 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

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese % 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

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese 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

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese 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

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese 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 )

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese 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

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese Many-to-many bestelling product  Een aparte tabel met bestellingID-productID paren

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese Selecteren via relaties Selecteer alle klanten die een bepaald product hebben besteld.

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese Stap 1: SELECT en JOIN de tabellen: SELECT klant.* FROM klant JOIN bestelling JOIN bestelling_product JOIN product WHERE product.ID = 21

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese 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

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese 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

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese 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 Bos Graaf

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

V2-projecten database

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese 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’ )

Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese oefeningen  Doe de oefeningen 2