Ga naar inhoud

Header

Subqueries met EXISTS - Opdrachten

1. Acteurs met een bepaalde rol

In de IMDb database hebben we gegevens van acteurs en rollen:

Header

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 Q begint.

Maak gebruik van het volgende:

  • SELECT, FROM en WHERE.
  • Een subquery met EXISTS.
    • Selecteer alle kolommen uit tabel roles.
    • Waar een match is:
      • Tussen de overeenkomende kolommen uit tabellen actors en roles.
      • En waarden in kolom role beginnen met letter Q.
        • Maak gebruik van LIKE.
SELECT
  *
FROM
  actors
WHERE
  ... (
    SELECT
      *
    FROM
      ...
    WHERE
      ... = ...
      AND ... LIKE ...
  );




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
Columns: 2
Rows: 7

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 Q begint.
  • Die een rol hebben gespeeld waarvan de (rol)naam meer dan 10 karakters 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
Columns: 3
Rows: 4

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 WHERE statement naast EXISTS ook gebruik van een AND statement.
...
  ...
...
  ...
WHERE
  EXISTS (
    ...
  )
  AND ...;