
Subqueries met EXISTS - Opdrachten
1. Acteurs met een bepaalde rol
In de IMDb database hebben we gegevens van acteurs en rollen:

We zijn geïnteresseerd in de acteurs die een bepaalde rol hebben gespeeld.
- Rollen die beginnen met de letter
Q.
Schrijf een query die dit doet:
- Selecteer alle kolommen uit tabel
actors. - Alleen de acteurs die een rol hebben gespeeld die met letter
Qbegint.
Maak gebruik van het volgende:
SELECT,FROMenWHERE.- Een subquery met
EXISTS.- Selecteer alle kolommen uit tabel
roles. - Waar een match is:
- Tussen de overeenkomende kolommen uit tabellen
actorsenroles. - En waarden in kolom
rolebeginnen met letterQ.- Maak gebruik van
LIKE.
- Maak gebruik van
- Tussen de overeenkomende kolommen uit tabellen
- Selecteer alle kolommen uit tabel
2.(Extra) Acteurs met meer dan 2 rollen
Onderstaande query verkrijgt details van acteurs die meer dan 2 rollen hebben gespeeld:
SELECT
a.first_name,
a.last_name
FROM
actors AS a
LEFT JOIN roles AS r ON a.id = r.actor_id
GROUP BY
a.id
HAVING
COUNT(r.role) > 2;
| first_name | last_name |
|---|---|
| Bill | Paxton |
| Kevin | Bacon |
| Steve | Buscemi |
| Michael (I) | Madsen |
| Uma | Thurman |
| Brad | Pitt |
| Stevo | Polyi |
Hier wordt gebruik gemaakt van een LEFT JOIN.
Schrijf een query die hetzelfde resultaat geeft, maar waarbij je gebruik maakt van een subquery met EXISTS.
3.(Extra) Acteurs met bepaalde naam en rolnamen met veel karakters
Onderstaande query verkrijgt details van acteurs:
- Waarvan de naam met een
Qbegint. - Die een rol hebben gespeeld waarvan de (rol)naam meer dan
10karakters lang is.
SELECT
a.id,
a.first_name,
a.last_name
FROM
actors AS a
LEFT JOIN roles AS r ON a.id = r.actor_id
WHERE
LENGTH(r.role) > 10
AND last_name LIKE 'Q%'
ORDER BY
last_name;
| id | first_name | last_name |
|---|---|---|
| 385911 | Van | Quattro |
| 761130 | Kathleen | Quinlan |
| 761233 | Ana Maria | Quintana |
| 386627 | Luke | Quinton |
Hier wordt gebruik gemaakt van een LEFT JOIN.
Schrijf een query die hetzelfde resultaat geeft, maar waarbij je gebruik maakt van een subquery met EXISTS.
- Tip: maak binnen het
WHEREstatement naastEXISTSook gebruik van eenANDstatement.