• No results found

Je hebt altijd te maken met tabellen.

N/A
N/A
Protected

Academic year: 2021

Share "Je hebt altijd te maken met tabellen."

Copied!
8
0
0

Bezig met laden.... (Bekijk nu de volledige tekst)

Hele tekst

(1)

Subqueries

Huub de Beer

Eindhoven, 4 juni 2011

(2)

Herhaling: databases en queries:

I 0 of meer tabellen

I elke tabel nul of meer kolommen (of velden)

I elke tabel nul of meeruniekerijen

I elke query werkt op tabellen

I elke query levert een nieuwe tabel op

I een lege tabel is ook een tabel

Je hebt altijd te maken met tabellen.

Die kunnen leeg zijn

(3)

Subqueries

I In queries gebruik je tabellen

I Queries leveren een tabel op +

I Gebruik queries in queries: subqueries

(4)

3 soorten subqueries

Query levert op:

1. Een tabel met precies een cel → als enkele waarde 2. Een tabel met precies een kolom → waardeINdeze tabel?

3. Een willekeurige tabel → in deFROMclausule

(5)

Subqueries: tabel met een cel

Welke leerlingen zijn het jongst? Geef naam en leeftijd

SELECT achternaam, 2010−YEAR(geboorte_datum) AS leeftijd FROM leerling

WHERE geboorte_datum = ( SELECT MAX(geboorte_datum) FROM leerling

);

Subquery tussen haakjes. Een subquery die de plaats van een enkele waarde inneemt moet precies een cel groot zijn: veelal eenvoudige aggregatiefunctie-queries.

(6)

Subqueries: tabel met een kolom:

IN

-operator

Hoeveel leerlingen zitten in een klas waarvan het aantal leerlingen in die klas ongelijk is aan 5?

SELECT COUNT(∗) FROM leerling

WHERE klas_nr NOT IN ( SELECT klas_nr FROM leerling GROUP BY klas_nr HAVING COUNT( ll_nr ) = 5 );

GebruikIN en NOT IN om aan te geven of een waarde van een veld wel of niet in een eenkoloms tabel voorkomt. Zorg dat de subquery een enkele kolom als resultaat heeft.

Tip: maak eerst de subquery, stop die pas daarna in een overkoepelende query.

(7)

Subqueries: willekeurige tabellen in de

FROM

Ik wil de namen en leeftijden van alle leerlingen tussen 12 en 18 jaar die in een woonplaats wonen beginnende met een A; sorteer op naam.

SELECT naam, leeftijd FROM (

SELECT achternaam AS naam, 2010−YEAR(geboorte_datum) AS leeftijd FROM leerling

WHERE woonplaats LIKE’A%’

) AS awoner

WHERE leeftijd BETWEEN 12 AND 18 ORDER BY naam;

Gebruik de namen van de kolommen van de tabel gemaakt door de subquery! DeBETWEEN-operator is handig als kortschrift voor:

leeftijd >= 12AND leeftijd <= 18.

Een subquery in deFROM clausule moet een naam krijgen: gebruik AS nieuwe_naam.

(8)

Subqueries

I In deFROMclausule: elke willekeurige tabel en query

I In deWHEREclausule (enHAVING) als enkele waarde (een cel) of met behulp van deINoperator (een kolom)

I Overal waar een letterlijke waarde voor kan komen (een cel)

I De resultaattabel van een query moet passen

I Hak een groter probleem op in stukken: schrijf eerst de subqueries

I Je kunt zoveel subqueries gebruiken als je wilt

Referenties

GERELATEERDE DOCUMENTEN

[r]

For Europe &amp; South Africa: Small Stone Music Publishing,

‘Mijn les voor de coronacrisis zou dan ook zijn: bekijk de pandemie niet strikt vanuit de medische hoek, maar vanuit alle disciplines.. Je ziet dat er een behoefte bestaat om

3.1 Het centrale punt van waaruit de trends zijn gekwantificeerd 7 3.2 Kwantificering van de trends voor geklemde rechthoekige blokken 8 3.3 Samenstelling van trends tot

‘Wanneer er nu nieuwe iepen worden geplant, bijvoorbeeld in een nieuwbouwomgeving, is dat vaak een nieuwere soort, niet geënt en resistent tegen de iepenziekte. Niet alle

Een vergelijking tussen stap la en stap 2 van tabel 3 maakt duidelijk dat de invloed van hoe een toekomstige vader denkt dat zijn partner zijn betrokkenheid bij de

„Heb je geen zin om samen een muziekgroepje te vormen”, vroeg Jasper Overmeire een jaar geleden aan zijn vriend Seppe Van Aken.. Waarom dat dan niet

Het gevolg hiervan is dat een schuldeiser van de gezamenlijke vennoten zijn vordering zowel geldend kan maken tegen de gezamenlijke vennoten (‘tegen de vof’), dat verhaalbaar is