Guten Morgen, alle miteinander!
Nehmen wir mal an, ich hätte eine Paradox7-Datenbank, die ich mit einer Delphi4-Applikation anspreche. Nehmen wir weiter an, in dieser Datenbank gäbe es drei Tabellen:
- tfilm
- tcastcrew
- tdarsteller
Aufbau:
tfilm
-----
Id - Integer
Titel - Alpha (50)
tcastcrew
---------
Id - Integer
Nachname - Alpha (50)
Vorname - Alpha (50)
tdarsteller
-----------
Id - Integer
IdFilm - Integer
IdCast - Integer
Die Tabellen tfilm und tcastcrew beinhalten textliche Informationen, während die Tabelle tdarsteller als Verknüpfungstabelle zwischen den beiden dient.
Mit
SQL-Code:
SELECT DISTINCT t1.Id, t1.Titel FROM
tfilm t1
LEFT JOIN tdarsteller t2 ON t1.Id = t2.IdFilm
LEFT JOIN tcastcrew t3 ON t3.Id = t2.IdCast
WHERE t3.Vorname + " " + t3.Nachname LIKE "%Harrison Ford%"
ORDER BY Titel
beispielsweise könnte ich aus dieser Datenbank alle Filmtitel heraussuchen, zu denen "Harrison Ford" als Darsteller eingetragen ist.
Jetzt zu meiner eigentlichen Frage: Kann mir jemand auf die Sprünge helfen, wie ich die Abfrage zu formulieren habe, wenn ich mehrere Schauspieler angeben möchte und will, dass sie ALLE in diesem Film mitspielen? Also beispielsweise, dass ich alle Filme heraussuchen möchte, in denen "Harrison Ford" UND "Mark Hamill" mitspielen?
Mit
SQL-Code:
SELECT DISTINCT t1.Id, t1.Titel FROM
tfilm t1
LEFT JOIN tdarsteller t2 ON t1.Id = t2.IdFilm
LEFT JOIN tcastcrew t3 ON t3.Id = t2.IdCast
WHERE
t3.Vorname + " " + t3.Nachname LIKE "%Harrison Ford%"
AND t3.Vorname + " " + t3.Nachname LIKE "%Mark Hamill%"
ORDER BY TITEL
funktioniert es nicht, da die Tabelle tdarsteller ja jeweils EINE Verbindung zwischen tfilm und tcastcrew herstellt. Ich müsste aber ja ALLE Verbindungen überprüfen. Zwar liesse sich so etwas programmtechnisch erschlagen, aber den Aufwand möchte ich nicht treiben (macht schliesslich auch alles wieder ein wenig langsamer). Ich würde es gerne mit einer
Query schaffen, allerdings reichen meine
SQL-Kenntnisse dafür nicht aus...
Matthias