Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdHeidi Mertens Laatst gewijzigd meer dan 9 jaar geleden
1
Week 3 BIRAIV03 Les B5 BIRAIV03 Les B5
2
naampnt Jan10 Truus22 Ineke6 Tabel 1 codeomschrprijs a100stoel€ 160,00 a124tafel€ 255,00 Tabel 2 Voorbeeld
3
De join van twee tabellen naampntcodeomschrprijs Jan10a100stoel€ 160,00 Jan10a124tafel€ 255,00 Truus22a100stoel€ 160,00 Truus22a124tafel€ 255,00 Ineke6a100stoel€ 160,00 Ineke6a124tafel€ 255,00 SELECT * FROM tabel1, tabel2; Iedere rij uit de ene tabel wordt gecombineerd met iedere rij uit de andere tabel
4
Kolomnamen SELECT * FROM tabel1, tabel2; tabel1. naam tabel1. pnt tabel2. code tabel2. omschr tabel2. prijs Jan10a100stoel€ 160,00 Jan10a124tafel€ 255,00 Truus22a100stoel€ 160,00 Truus22a124tafel€ 255,00 Ineke6a100stoel€ 160,00 Ineke6a124tafel€ 255,00
5
Nog liever: alias gebruiken SELECT * FROM tabel1 AS a, tabel2 AS b; a.naama.pntb.codeb.omschrb.prijs Jan10a100stoel€ 160,00 Jan10a124tafel€ 255,00 Truus22a100stoel€ 160,00 Truus22a124tafel€ 255,00 Ineke6a100stoel€ 160,00 Ineke6a124tafel€ 255,00 SELECT * FROM tabel1 a, tabel2 b; of
6
Meer praktisch voorbeeld 1 naamprov MiaUt CobiL PimL Vrbld1 Provincie afknaam UtUtrecht GrGroningen DrDrenthe LLimburg FrFriesland
7
Meer praktisch voorbeeld 2 SELECT * FROM vrbld1 a, provincie b; a.naama.provb.afkb.naam MiaUt Utrecht CobiLUtUtrecht PimLUtUtrecht MiaUtGrGroningen CobiLGrGroningen PimLGrGroningen MiaUtDrDrenthe CobiLDrDrenthe PimLDrDrenthe MiaUtLLimburg CobiLLLimburg PimLLLimburg MiaUtFrFriesland CobiLFrFriesland PimLFrFriesland
8
Meer praktisch voorbeeld 3: zinvolle rijen SELECT * FROM vrbld1 a, provincie b; a.naama.provb.afkb.naam MiaUt Utrecht CobiLUtUtrecht PimLUtUtrecht MiaUtGrGroningen CobiLGrGroningen PimLGrGroningen MiaUtDrDrenthe CobiLDrDrenthe PimLDrDrenthe MiaUtLLimburg CobiLLLimburg PimLLLimburg MiaUtFrFriesland CobiLFrFriesland PimLFrFriesland
9
Meer praktisch voorbeeld 4: joinconditie SELECT a.naam, b.naam FROM vrbld1 a, provincie b WHERE a.prov = b.afk; a.naamb.naam MiaUtrecht CobiLimburg PimLimburg
10
De tabel FAVOURITES NaamClubGeboortedatumPositie Arjan WisseAZ06 okt 1985aanval Arnold KruiswijkFC Groningen02 nov 1984verdediging Stijn SchaarsVitesse11 jan 1984middenveld Johnny HeytingaAjax15 nov 1983verdediging Rafael van der VaartAjax11 feb 1983middenveld Theo ZwarthoedAZ19 nov 1982doel Danny BuijsFC Groningen21 jun 1982verdediging Roel BrouwersRoda JC28 nov 1981verdediging Dirk KuytFeyenoord22 jul 1980aanval Edwin de GraaffFeyenoord30 apr 1980middenveld Pascal BosschaertFeyenoord28 feb 1980middenveld Sander KellerFC Utrecht18 sep 1979verdediging Jan Vennegoor of HesselinkPSV07 nov 1978aanval ---
11
Vraag: de clubgenoten van Arjan Wisse NaamClubGeboortedatumPositie Arjan WisseAZ06 okt 1985aanval Arnold KruiswijkFC Groningen02 nov 1984verdediging Stijn SchaarsVitesse11 jan 1984middenveld Johnny HeytingaAjax15 nov 1983verdediging Rafael van der VaartAjax11 feb 1983middenveld Theo ZwarthoedAZ19 nov 1982doel Danny BuijsFC Groningen21 jun 1982verdediging Roel BrouwersRoda JC28 nov 1981verdediging Dirk KuytFeyenoord22 jul 1980aanval Edwin de GraaffFeyenoord30 apr 1980middenveld Pascal BosschaertFeyenoord28 feb 1980middenveld Sander KellerFC Utrecht18 sep 1979verdediging Jan Vennegoor of HesselinkPSV07 nov 1978aanval ---
12
Minst intelligente oplossing SELECT club FROM favourites WHERE naam = 'Arjan Wisse'; club AZ Het resultaat: SELECT naam FROM favourites WHERE club = 'AZ'; naam Arjan Wisse Theo Zwarthoed Barry Opdam Het resultaat:
13
Met een subquery SELECT naam FROM favourites WHERE club = (SELECT club FROM favourites WHERE naam = 'Arjan Wisse'); naam Arjan Wisse Theo Zwarthoed Barry Opdam Het resultaat:
14
Met een selfjoin 1 SELECT x.naam, x.club, y.naam, y.club FROM favourites x, favourites y;
15
Met een selfjoin 1: resultaat x.naamx.cluby.naamy.club Arjan WisseAZArjan WisseAZ Arnold KruiswijkFC GroningenArjan WisseAZ --- Arjan WisseAZArnold KruiswijkFC Groningen Arnold KruiswijkFC GroningenArnold KruiswijkFC Groningen --- Arjan WisseAZStijn SchaarsVitesse Arnold KruiswijkFC GroningenStijn SchaarsVitesse --- Arjan WisseAZBarry OpdamAZ Arnold KruiswijkFC GroningenBarry OpdamAZ ---
16
Met een selfjoin 2 SELECT x.naam, x.club, y.naam, y.club FROM favourites x, favourites y WHERE x.naam = 'Arjan Wisse';
17
Met een selfjoin 2: het resultaat x.naamx.cluby.naamy.club Arjan WisseAZArjan WisseAZ Arjan WisseAZArnold KruiswijkFC Groningen Arjan WisseAZStijn SchaarsVitesse Arjan WisseAZJohnny HeytingaAjax Arjan WisseAZRafael van der VaartAjax Arjan WisseAZTheo ZwarthoedAZ Arjan WisseAZDanny BuijsFC Groningen Arjan WisseAZRoel BrouwersRoda JC Arjan WisseAZDirk KuytFeyenoord Arjan WisseAZEdwin de GraaffFeyenoord ---
18
Met een selfjoin 3: bijna oplossing SELECT x.naam, x.club, y.naam, y.club FROM favourites x, favourites y WHERE x.naam = 'Arjan Wisse' AND x.club = y.club; x.naamx.cluby.naamy.club Arjan WisseAZTheo ZwarthoedAZ Arjan WisseAZBarry OpdamAZ Arjan WisseAZArjan WisseAZ
19
Met een selfjoin 4: uiteindelijke oplossing SELECT y.naam FROM favourites x, favourites y WHERE x.naam = 'Arjan Wisse' AND x.club = y.club; naam Theo Zwarthoed Barry Opdam Arjan Wisse
20
Opdracht Schrijf een self join waarmee u alle favorieten opsomt die dezelfde positie innemen als Bas Roorda. Schrijf een self join waarmee u alle namen van spelers noemt die in hetzelfde jaar als Bas Roorda geboren zijn. Aanwijzing: u bepaalt het jaartal met behulp van de functie YEAR(geboortedatum).
21
Nog een voorbeeld We zijn op zoek naar de favoriete spelers die jonger zijn dan Dirk Kuyt. De geboortedatum van die spelers is daarom groter dan die van Dirk. SELECT b.naam, b.geboortedatum FROM favourites a, favourites b WHERE a.naam = 'Dirk Kuyt' AND b.geboortedatum > a.geboortedatum;
22
Het resultaat SELECT b.naam, b.geboortedatum FROM favourites a, favourites b WHERE a.naam = 'Dirk Kuyt' AND b.geboortedatum > a.geboortedatum; naamgeboortedatum Arjan Wisse06 okt 1985 Arnold Kruiswijk02 nov 1984 Stijn Schaars11 jan 1984 Johnny Heytinga15 nov 1983 Rafael van der Vaart11 feb 1983 Theo Zwarthoed19 nov 1982 Danny Buijs21 jun 1982 Roel Brouwers28 nov 1981
23
Mogelijkheden met self join NaamLandTijd BarisjevaRus40,36 De LoorNed40,11 FriesingerDui40,27 HunyadyOos40,32 PechsteinDui39,88 SimionatoIta40,1 EK500vr
24
EK500vr EK500vr a.Naama.Landa.Tijdb.Naamb.Landb.Tijd BarisjevaRus40,36BarisjevaRus40,36 De LoorNed40,11BarisjevaRus40,36 FriesingerDui40,27BarisjevaRus40,36 HunyadyOos40,32BarisjevaRus40,36 PechsteinDui39,88BarisjevaRus40,36 SimionatoIta40,1BarisjevaRus40,36 BarisjevaRus40,36De LoorNed40,11 De LoorNed40,11De LoorNed40,11 FriesingerDui40,27De LoorNed40,11 HunyadyOos40,32De LoorNed40,11 PechsteinDui39,88De LoorNed40,11 SimionatoIta40,1De LoorNed40,11 BarisjevaRus40,36FriesingerDui40,27 De LoorNed40,11FriesingerDui40,27 ---
25
Join conditie a.tijd >= b.tijd a.Naama.Landa.Tijdb.Naamb.Landb.Tijd BarisjevaRus40,36BarisjevaRus40,36 De LoorNed40,11BarisjevaRus40,36 FriesingerDui40,27BarisjevaRus40,36 HunyadyOos40,32BarisjevaRus40,36 PechsteinDui39,88BarisjevaRus40,36 SimionatoIta40,1BarisjevaRus40,36 BarisjevaRus40,36De LoorNed40,11 De LoorNed40,11De LoorNed40,11 FriesingerDui40,27De LoorNed40,11 HunyadyOos40,32De LoorNed40,11 PechsteinDui39,88De LoorNed40,11 SimionatoIta40,1De LoorNed40,11 BarisjevaRus40,36FriesingerDui40,27 De LoorNed40,11FriesingerDui40,27 ---
26
Resultaat a.Naama.Landa.Tijdb.Naamb.Landb.Tijd BarisjevaRus40,36BarisjevaRus40,36 BarisjevaRus40,36De LoorNed40,11 De LoorNed40,11De LoorNed40,11 FriesingerDui40,27De LoorNed40,11 HunyadyOos40,32De LoorNed40,11 BarisjevaRus40,36FriesingerDui40,27 FriesingerDui40,27FriesingerDui40,27 HunyadyOos40,32FriesingerDui40,27 BarisjevaRus40,36HunyadyOos40,32 HunyadyOos40,32HunyadyOos40,32 BarisjevaRus40,36PechsteinDui39,88 De LoorNed40,11PechsteinDui39,88 FriesingerDui40,27PechsteinDui39,88 HunyadyOos40,32PechsteinDui39,88 ---
27
Groeperen en tellen SELECT a.naam, COUNT(*) FROM ek500vr a, ek500vr b WHERE a.tijd >= b.tijd GROUP BY a.naam; naamExpr1001 Barisjeva6 De Loor3 Friesinger4 Hunyady5 Pechstein1 Simionato2
28
Verfraaiing SELECT a.naam, COUNT(*) AS uitslag FROM ek500vr a, ek500vr b WHERE a.tijd >= b.tijd GROUP BY a.naam ORDER BY COUNT(*); naamuitslag Pechstein1 Simionato2 De Loor3 Friesinger4 Hunyady5 Barisjeva6 maar toch...
29
De heren verreden ook een 500 meter NaamLandTijd AndersenNoo37,02 BaloHon37,3 BeulenkampNed37,32 KibalkoRus37 KuentzFra37,46 PostmaNed36,95 Risto RosendahlFin36,96 SjepelRus37,42 TuitertNed36,96 UytdehaageNed37,3 ek500m
30
Hetzelfde foefje SELECT a.naam, COUNT(*) AS uitslag FROM ek500m a, ek500m b WHERE a.tijd >= b.tijd GROUP BY a.naam ORDER BY COUNT(*); naamuitslag Postma1 Tuitert3 Risto Rosendahl3 Kibalko4 --- naamuitslag Postma1 Tuitert2 Risto Rosendahl2 Kibalko4 --- Zoek zelf de oplossing...
31
Opdracht Bepaal met behulp van een self join van elk land de snelste deelnemer.
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.