02 - SQL - subqueries

SQL - subqueries
SQL - SUBQUERIES
1 / 21
volgende
Slide 1: Tekstslide
ICTMBOStudiejaar 1,2

In deze les zitten 21 slides, met interactieve quizzen en tekstslides.

Onderdelen in deze les

SQL - subqueries
SQL - SUBQUERIES

Slide 1 - Tekstslide

Deze slide heeft geen instructies

Welke drie basiswoorden heb je
nodig voor SQL queries?
A
SELECT WHERE BEGIN
B
SELECT WHERE ORDER
C
SHOW FROM WHERE
D
SELECT FROM WHERE

Slide 2 - Quizvraag

Deze slide heeft geen instructies

SELECT

FROM

,
Maak een query waarmee je een overzicht krijgt van naam, adres en woonplaats van alle rekeninghouders.
;
,
adres
naam
WHERE
AND
OR
rekeninghouder
LIKE
plaats
telefoonnr

Slide 3 - Sleepvraag

Deze slide heeft geen instructies

Waarmee sorteer je een tabel
op een veldnaam?
A
SORT BY
B
ORDERING BY
C
ORDER BY
D
ORDER

Slide 4 - Quizvraag

Deze slide heeft geen instructies

Wat doet de query:

SELECT naam, saldo
FROM rekeninghouder, rekening
WHERE rekening.rekeninghdr_id = rekeninghouder.rekeninghdr_id;
A
Naam en bijbehorend rekeningnummer en saldo van alle rekeninghouders.
B
Alle saldi van rekeninghouders die hetzelfde rekeningnummer hebben.
C
Alle namen en saldi van de rekeninghouders.
D
Alle namen en rekeningnummers van alle rekeninghouders.

Slide 5 - Quizvraag

Deze slide heeft geen instructies

SQL - subqueries

Slide 6 - Tekstslide

Deze slide heeft geen instructies

Doel van de les
In deze les verkennen we het gebruik van subqueries in SQL, waarmee we data kunnen verfijnen en manipuleren door query's binnen query's te gebruiken.

Slide 7 - Tekstslide

Deze slide heeft geen instructies

SUB-QUERIES
We willen weten welke leerling de hoogste boete heeft betaald na het lenen van een boek
Dat doen we eerst m.b.v. twee queries, of als je de naam van de leerling ook wilt weten, zelfs drie
  1. Wat is de maximale boete die betaald is?
  2. Welke leerling(en) moesten die boete betalen

Slide 8 - Tekstslide

Deze slide heeft geen instructies

SUB-QUERIES
Query 1
Query 2
/* Toont de maximale boete die is gegeven, resultaat is 4 */
SELECT
    MAX(boete)
FROM uitleningen
/* Laat alle leerlingnummers zien die een boete van 4 hebben */\
SELECT
    llnr
FROM
    uitleningen
WHERE boete = 4;

Slide 9 - Tekstslide

Deze slide heeft geen instructies

SUB-QUERIES
Gecombineerd wordt dit:
SELECT
    llnr
FROM
    uitleningen
WHERE boete =
(   -- subquery
    SELECT
        MAX(boete)
    FROM
        uitleningen
)

Slide 10 - Tekstslide

Deze slide heeft geen instructies

SUB-QUERIES
En als we de naam en klas willen weten:
SELECT
    naam, klas
FROM leerlingen
WHERE llnr IN
(
    SELECT
        llnr
    FROM uitleningen
    WHERE boete =
    (   -- subquery
        SELECT
            MAX(boete)
        FROM
            uitleningen
    )
)

Slide 11 - Tekstslide

Deze slide heeft geen instructies

Oefening
school.sql
SELECT
    doc_naam AS 'docent naam',
    telefoon
FROM
    docent
WHERE
    doc_code =(
    SELECT
        doc_code
    FROM
        cursus
    WHERE
        curs_prijs =(
        SELECT
            MAX(curs_prijs)
        FROM
            cursus
    )
);

Slide 12 - Tekstslide

Deze slide heeft geen instructies

Antwoord: Oefening
SELECT doc_naam AS 'docent naam', telefoon
FROM docent
WHERE
    doc_code =
(
    SELECT doc_code
    FROM cursus
    WHERE curs_prijs =
    (
        SELECT MAX(curs_prijs)
        FROM cursus
    )
);

Slide 13 - Tekstslide

Deze slide heeft geen instructies

Geef de cursus namen van de docent met de hoogste uurloon

Slide 14 - Open vraag

Deze slide heeft geen instructies

Geef de cursus namen van de docent met de hoogste uurloon
Geef de cursus namen van de docent met de hoogste uurloon

Slide 15 - Tekstslide

Uitwerking:
SELECT
    omschr
FROM
    `cursus`
WHERE
    doc_code =(
    SELECT
        doc_code
    FROM
        `docent`
    WHERE
        uurloon =(
        SELECT
            MAX(uurloon)
        FROM
            `docent`
    )
);
TIP
Vanuit vraag weet je eerste SELECT

Daarna van 'achteraf' denken..

Slide 16 - Tekstslide

Deze slide heeft geen instructies

Wat heb ik geleerd
Met subqueries kun je gegevens ophalen die afhankelijk zijn van meerdere tabellen door verschillende queries aan elkaar te koppelen.

Slide 17 - Tekstslide

Deze slide heeft geen instructies

Resources
  • https://www.programiz.com/sql/subquery

Slide 18 - Tekstslide

Deze slide heeft geen instructies

Extra oefeningen
school.sql
Geef de roepnaam en naam van de cursist die het laagste cursus geld heeft betaald.
Toon de roepnaam, naam van de cursist die het laagste cijfer heeft gescoord voor een cursus.
Oefening 1
Oefening 2

Slide 19 - Tekstslide

Opdracht 1
SELECT
    roepnaam,
    naam
FROM
    cursist
WHERE
    cursistnr =(
    SELECT
        cursistnr
    FROM
        c_regel
    WHERE
        betaald =(
        SELECT
            MIN(betaald)
        FROM
            `c_regel`
    )
);
Opdracht 2
SELECT
    roepnaam,
    naam
FROM
    cursist
WHERE
    cursistnr =(
    SELECT
        cursistnr
    FROM
        `c_regel`
    WHERE
        cijfer =(
        SELECT
            MIN(cijfer)
        FROM
            `c_regel`
    )
);
Antwoord: Oefening 1
SELECT roepnaam, naam
FROM cursist
WHERE cursistnr =
(
        SELECT cursistnr
        FROM c_regel
        WHERE betaald =
        (
            SELECT MIN(betaald)
            FROM c_regel
        )
)

Slide 20 - Tekstslide

Deze slide heeft geen instructies

Antwoord: Oefening 2
SELECT roepnaam, naam
FROM cursist
WHERE cursistnr =
(
    SELECT  cursistnr
    FROM c_regel
    WHERE cijfer
    (
        SELECT  MIN(cijfer)
        FROM c_regel
    )
);

Slide 21 - Tekstslide

Deze slide heeft geen instructies