02 - SQL - subqueries

SQL - subqueries
SQL - SUBQUERIES
1 / 21
suivant
Slide 1: Diapositive
ICTMBOStudiejaar 1,2

Cette leçon contient 21 diapositives, avec quiz interactifs et diapositives de texte.

Éléments de cette leçon

SQL - subqueries
SQL - SUBQUERIES

Slide 1 - Diapositive

Cet élément n'a pas d'instructions

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 - Quiz

Cet élément n'a pas d'instructions

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 - Question de remorquage

Cet élément n'a pas d'instructions

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

Slide 4 - Quiz

Cet élément n'a pas d'instructions

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 - Quiz

Cet élément n'a pas d'instructions

SQL - subqueries

Slide 6 - Diapositive

Cet élément n'a pas d'instructions

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 - Diapositive

Cet élément n'a pas d'instructions

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 - Diapositive

Cet élément n'a pas d'instructions

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 - Diapositive

Cet élément n'a pas d'instructions

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

Slide 10 - Diapositive

Cet élément n'a pas d'instructions

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 - Diapositive

Cet élément n'a pas d'instructions

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 - Diapositive

Cet élément n'a pas d'instructions

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 - Diapositive

Cet élément n'a pas d'instructions

Geef de cursus namen van de docent met de hoogste uurloon

Slide 14 - Question ouverte

Cet élément n'a pas d'instructions

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

Slide 15 - Diapositive

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 - Diapositive

Cet élément n'a pas d'instructions

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 - Diapositive

Cet élément n'a pas d'instructions

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

Slide 18 - Diapositive

Cet élément n'a pas d'instructions

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 - Diapositive

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 - Diapositive

Cet élément n'a pas d'instructions

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 - Diapositive

Cet élément n'a pas d'instructions