
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
SELECT
*
FROM
actors
WHERE
EXISTS (
SELECT
*
FROM
roles
WHERE
actors.id = roles.actor_id
AND role LIKE 'Q%'
);
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.