Welche Person hat nie mit Harrison Ford zusammen an einem Film mitgewirkt?

dixtur

Neuer Benutzer
Beiträge
2
Hallo,
Ich finde keinen guten Ansatz zu folgender Aufgabe:

film (id, titel, jahr, fsk)
kino (id, name, telefon, adresse)
mitwirkung (film, person, funktion)
person (id, name, vorname)
vorstellung (film, datum, kino)

Welche Person hat nie mit Harrison Ford zusammen an einem Film mitgewirkt?

Danke schonmal im Vorraus
MfG
 
Werbung:
PostgreSQL aber kommt nicht auf die genaue Syntax an.

Hatte an etwas in dieser Art gedacht:

SELECT name, vorname
FROM person JOIN mitwirkung
ON person.id = mitwirkung.person
WHERE "Nicht folgende Filme vorkommen:" <--Wie mache ich das?
( SELECT mitwirkung.film
FROM film JOIN mitwirkung
ON film.id = mitwirkung.film
JOIN person
ON mitwirkung.person = person.id
WHERE person.name = "Ford" AND person.vorname = "Harrison")
 
mal ganz schnell und vereinfacht:

Du hast personen und filme:

Code:
test=*# select * from mitwirkung ;
 person | film
--------+------
  1 |  1
  1 |  2
  1 |  3
  2 |  1
  3 |  1
  3 |  2
  3 |  3
(7 rows)

Harrson Ford spielte in Film 2 und 3 mit.

Zuerst einmal: je Person, in welchen Film spielte er mit?

Code:
test=*# select person, array_agg(film) from mitwirkung group by person;
 person | array_agg
--------+-----------
  1 | {1,2,3}
  3 | {1,2,3}
  2 | {1}

Wir suchen alle Personen, die in 2 und 3 mitgemacht haben:

Code:
test=*# select person, array_agg(film) from mitwirkung group by person having array_agg(film) @> array[2,3];
 person | array_agg
--------+-----------
  1 | {1,2,3}
  3 | {1,2,3}
(2 rows)

Nicht dabei ist Person 2. Reicht das als Ansatz? Ist gemacht mit PostgreSQL.
 
Werbung:
array_agg() ist vielleicht für eine Theorie-Aufgabe etwas sehr spezifisch. Man könnte hier auch mit NOT IN oder NOT EXISTS und Unterabfrage arbeiten, ist vielleicht erstmal die Schullösung.
 
Zurück
Oben