oracle: Abfrage aus einer n zu m Beziehung

BastianX75

Grünschnabel
Hallo,

ich stehe hier grad irgendwie total auf dem Schlauch.

Ich habe 3 Tabellen

Tabelle A:
a_id
a_bezeichnung

Tabelle B:
b_id
b_bezeichnung

und eine Zuordnungstabelle Z:
a_id
b_id

In Z sind den a_id jeweils mehrere b_id zugeordnet.

Ich komme jetzt einfach nicht drauf, wie die Abfrage aussehen muß, wenn ich alle a_id haben möchte, die allen übergebenen b_id zugeordnet sind.

Code:
select a_id  from Z where b_id in (1, 2, 3) group by a_id
liefert mir alle a_id in denen mindestens eine der b_id vorhanden ist.

Wäre toll, wenn mir da mal einer auf die Sprünge helfen könnte.

Gruß Bastian
 
Hallo Klaus,

diesen Beitrag hatte ich schon gefunden. Leider hört es an der Stelle auf, an der es für mich interessant wird ;)

Mal als Beispiel

Tabelle A sind Filme, Tabelle B Schauspieler. In Z sind jedem Film mehrere Schauspieler zugeordnet.

Ich möchte jetzt alle Filme, in denen Richard Gere und Julia Roberts mitspielen.

Gruß Bastian
 
Das und klingt ziemlich tricky. Ich wüsste nicht wie man das mit einer statischen Abfrage für eine beliebig große Menge an b's realisiert.
Für ne dynamische Abfrage fällt mir spontan die Schnittmenge ein.

SELECT a_id from Z Where b_id=1
INTERSECT
SELECT a_id from Z WHERE b_id=2
INTERSECT
SELECT a_id from Z WHERE b_id=3
 
Hallo,

der Tip mit dem INTERSECT war schon mal gar nicht schlecht. Danke :)

Ich habs jetzt folgendermaßen gemacht (geht etwas schneller)

Code:
SELECT a_id FROM Z WHERE b_id IN (1,2,3) GROUP BY a_id HAVING COUNT(a_id) = 3

das funktioniert allerdings nur, weil ich die Anzahl der b_id kenne.

Gruß Bastian
 
Zurück