BIMAIV03 Les A6 BIMAIV03 Les A6
Het resultaat van een query (1) BOEKEN SELECT MAX(prijs) FROM boeken; SELECT MAX(prijs) FROM boeken; BOEKNRTITELUITGEVERPRIJS Word in twaalf dagenMEU€ 22, WordPerfect 9BB€ 29, Xtal Reports de luxeMEU€ 32, Access voor dummiesBB€ 32, Haal het onderste uit ExcelAS€ 39, Brieven schrijven in WordAS€ 35, Expr1000 € 89,90
Het resultaat van een query (2) BOEKEN SELECT DISTINCT uitgever FROM boeken; SELECT DISTINCT uitgever FROM boeken; BOEKNRTITELUITGEVERPRIJS Word in twaalf dagenMEU€ 22, WordPerfect 9BB€ 29, Xtal Reports de luxeMEU€ 32, Access voor dummiesBB€ 32, Haal het onderste uit ExcelAS€ 39, Brieven schrijven in WordAS€ 35, uitgever AS BB KLW MEU
Het resultaat van een query (3) BOEKEN SELECT uitgever, COUNT(*) FROM boeken GROUP BY uitgever; SELECT uitgever, COUNT(*) FROM boeken GROUP BY uitgever; BOEKNRTITELUITGEVERPRIJS Word in twaalf dagenMEU€ 22, WordPerfect 9BB€ 29, Xtal Reports de luxeMEU€ 32, Access voor dummiesBB€ 32, Haal het onderste uit ExcelAS€ 39, Brieven schrijven in WordAS€ 35, uitgeverExpr1001 AS5 BB5 KLW1 MEU6
Het resultaat van een query (4) Het resultaat is altijd Expr1000 € 89,90 uitgever AS BB KLW MEU uitgeverExpr1001 AS5 BB5 KLW1 MEU6 Eén getal, tekst of datum Een rijtje getallen, teksten of datums Een complete tabel
Het resultaat van een query (5) Het resultaat is altijd een tabel Expr1000 € 89,90 uitgever AS BB KLW MEU uitgeverExpr1001 AS5 BB5 KLW1 MEU6 Een tabel met één rij en één kolom Een tabel met één kolom Een tabel
Subquery (1) Overal waar sql een tabel verwacht mag een query gebruikt worden. NAAMVOORNAAMGBJCLUBSPRINTVERKOGELGESLACHT KerkhofsMaarten86Scorpio9,55,59m VerdaasFabian86Scorpio103,966,57m WinterFerdinand de87Scorpio103,856,05m RuttenStijn86Atledo10,43,547,94m Nijs-BikEmile de87Atledo10,43,666,94m HeijmansCoen87Scorpio103,565,42m --- MEERKAMP SELECT voornaam + ' ' + naam FROM meerkamp WHERE club = 'Atledo' AND geslacht = 'm'; SELECT voornaam + ' ' + naam FROM meerkamp WHERE club = 'Atledo' AND geslacht = 'm'; Expr1000 Stijn Rutten Emile de Nijs-Bik Dion Pereira Dennie van Blerck Wouter Meulemans
Subquery (2) SELECT voornaam + ' ' + naam FROM meerkamp WHERE club = 'Atledo' AND geslacht = 'm'; SELECT voornaam + ' ' + naam FROM meerkamp WHERE club = 'Atledo' AND geslacht = 'm'; Expr1000 Stijn Rutten Emile de Nijs-Bik Dion Pereira Dennie van Blerck Wouter Meulemans SELECT voornaam + ' ' + naam FROM (SELECT * FROM meerkamp WHERE club = 'Atledo') WHERE geslacht = 'm'; SELECT voornaam + ' ' + naam FROM (SELECT * FROM meerkamp WHERE club = 'Atledo') WHERE geslacht = 'm'; SELECT voornaam + ' ' + naam FROM (SELECT * FROM meerkamp WHERE geslacht = 'm') WHERE club = 'Atledo'; SELECT voornaam + ' ' + naam FROM (SELECT * FROM meerkamp WHERE geslacht = 'm') WHERE club = 'Atledo';
Subquery (2) SELECT voornaam + ' ' + naam FROM meerkamp WHERE club = 'Atledo' AND geslacht = 'm'; SELECT voornaam + ' ' + naam FROM meerkamp WHERE club = 'Atledo' AND geslacht = 'm'; Expr1000 Stijn Rutten Emile de Nijs-Bik Dion Pereira Dennie van Blerck Wouter Meulemans SELECT voornaam + ' ' + naam FROM (SELECT * FROM meerkamp WHERE geslacht = 'm') WHERE club = 'Atledo'); SELECT voornaam + ' ' + naam FROM (SELECT * FROM meerkamp WHERE geslacht = 'm') WHERE club = 'Atledo');
Subquery (3) Een vraag Hoeveel verschillende clubs hebben aan de meerkamp deelgenomen? Normaal kan SELECT COUNT(DISTINCT club) FROM meerkamp; In JetSQL echter niet. SELECT COUNT(*) FROM (SELECT DISTINCT club FROM meerkamp); SELECT COUNT(*) FROM (SELECT DISTINCT club FROM meerkamp); In gemakkelijk op te lossen
Subquery (4) Resultaat is één waarde Wie zijn de clubgenoten van Maaike Dikmans? SELECT voornaam + ' ' + naam FROM meerkamp WHERE club = 'Spiridon'; SELECT voornaam + ' ' + naam FROM meerkamp WHERE club = 'Spiridon'; En vervolgens met behulp van het antwoord formuleren: Natuurlijk kun je eerst de club van Maaike achterhalen met SELECT club FROM meerkamp WHERE naam = 'Dikmans'; club Spiridon
Subquery (4 vervolg) Resultaat is één waarde SELECT voornaam + ' ' + naam FROM meerkamp WHERE club = 'Spiridon'; SELECT voornaam + ' ' + naam FROM meerkamp WHERE club = 'Spiridon'; SELECT voornaam + ' ' + naam FROM meerkamp WHERE club = (SELECT club FROM meerkamp WHERE naam = 'Dikmans'); SELECT voornaam + ' ' + naam FROM meerkamp WHERE club = (SELECT club FROM meerkamp WHERE naam = 'Dikmans'); Mooier is: SELECT club FROM meerkamp WHERE naam = 'Dikmans';
Subquery (5) Resultaat is één waarde Wat is de titel van het duurste boek uit de tabel BOEKEN? SELECT titel FROM boeken WHERE prijs = 89.9; SELECT titel FROM boeken WHERE prijs = 89.9; En vervolgens met behulp van het antwoord de query formuleren: Natuurlijk kun je eerst de prijs van het duurste boek bepalen. SELECT MAX(prijs) FROM boeken; Expr1000 € 89,90
Subquery (5 vervolg) Resultaat is één waarde SELECT MAX(prijs) FROM boeken; SELECT titel FROM boeken WHERE prijs = 89.9; SELECT titel FROM boeken WHERE prijs = 89.9; SELECT titel FROM boeken WHERE prijs = (SELECT MAX(prijs) FROM boeken); SELECT titel FROM boeken WHERE prijs = (SELECT MAX(prijs) FROM boeken); Mooier is natuurlijk:
Subquery (6) Een rijtje waarden CoureurTeam M. SchumacherFerrari BarrichelloFerrari ButtonBAR SatoBAR FisichellaRenault AlonsoRenault WebberWilliams HeidfeldWilliams RäikkönenMcLaren MontoyaMcLaren de la RosaMcLaren MassaSauber VilleneuveSauber CoulthardRed Bull --- GPCoureurRangnrPunten AustraliëFisichella110 AustraliëBarrichello28 AustraliëAlonso36 AustraliëCoulthard45 AustraliëWebber54 AustraliëMontoya63 AustraliëKlien72 AustraliëRäikkönen81 AustraliëTrulli90 AustraliëMassa100 AustraliëButton110 AustraliëR. Schumacher120 AustraliëVilleneuve130 AustraliëSato UITSLAGCOUREUR
Subquery (6) Van welk team is wel eens een bolide op de eerste plaats geëindigd? CoureurTeam M. SchumacherFerrari BarrichelloFerrari ButtonBAR SatoBAR FisichellaRenault AlonsoRenault WebberWilliams HeidfeldWilliams RäikkönenMcLaren MontoyaMcLaren de la RosaMcLaren MassaSauber VilleneuveSauber CoulthardRed Bull --- GPCoureurRangnrPunten AustraliëFisichella110 AustraliëBarrichello28 AustraliëAlonso36 AustraliëCoulthard45 AustraliëWebber54 AustraliëMontoya63 AustraliëKlien72 AustraliëRäikkönen81 AustraliëTrulli90 AustraliëMassa100 AustraliëButton110 AustraliëR. Schumacher120 AustraliëVilleneuve130 AustraliëSato UITSLAGCOUREUR
Subquery (6 vervolg) Oplossing zonder subquery SELECT team FROM coureur, uitslag WHERE coureur.coureur = uitslag.coureur AND rangnr = 1; SELECT team FROM coureur, uitslag WHERE coureur.coureur = uitslag.coureur AND rangnr = 1; team Renault McLaren SELECT DISTINCT team FROM coureur, uitslag WHERE coureur.coureur = uitslag.coureur AND rangnr = 1; SELECT DISTINCT team FROM coureur, uitslag WHERE coureur.coureur = uitslag.coureur AND rangnr = 1; team McLaren Renault Mooier is natuurlijk:
Subquery (6 vervolg) Oplossing met subquery SELECT team FROM coureur WHERE coureur IN (SELECT coureur FROM uitslag WHERE rangnr = 1); SELECT team FROM coureur WHERE coureur IN (SELECT coureur FROM uitslag WHERE rangnr = 1); team Renault McLaren Mooier is natuurlijk: SELECT DISTINCT team FROM coureur WHERE coureur IN (SELECT coureur FROM uitslag WHERE rangnr = 1); SELECT DISTINCT team FROM coureur WHERE coureur IN (SELECT coureur FROM uitslag WHERE rangnr = 1); team McLaren Renault
Subquery (7) Noodzakelijke subquery SELECT coureur FROM coureur WHERE coureur NOT IN (SELECT coureur FROM uitslag WHERE rangnr IN (1, 2, 3)); SELECT coureur FROM coureur WHERE coureur NOT IN (SELECT coureur FROM uitslag WHERE rangnr IN (1, 2, 3)); Welke coureurs hebben nog nooit een podiumplaats behaald? coureur Button Sato Montoya de la Rosa Massa Villeneuve Coulthard Klien ---