02 - SQL - subqueries

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

This lesson contains 21 slides, with interactive quizzes and text slides.

Items in this lesson

SQL - subqueries
SQL - SUBQUERIES

Slide 1 - Slide

This item has no 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

This item has no 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 - Drag question

This item has no instructions

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

Slide 4 - Quiz

This item has no 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

This item has no instructions

SQL - subqueries

Slide 6 - Slide

This item has no 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 - Slide

This item has no 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 - Slide

This item has no 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 - Slide

This item has no instructions

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

Slide 10 - Slide

This item has no 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 - Slide

This item has no 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 - Slide

This item has no 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 - Slide

This item has no instructions

Geef de cursus namen van de docent met de hoogste uurloon

Slide 14 - Open question

This item has no 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 - Slide

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

This item has no 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 - Slide

This item has no instructions

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

Slide 18 - Slide

This item has no 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 - Slide

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

This item has no 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 - Slide

This item has no instructions