tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
526
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    BastianX75 BastianX75 ist offline Rookie
    Registriert seit
    Feb 2008
    Beiträge
    6
    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 :
    1
    
    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
     

  2. #2
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Hallo Bastian,
    wenn ich Dich richtig verstanden habe, dann suchst Du dies hier:
    http://www.tutorials.de/forum/relati...-aber-wie.html
    Gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  3. #3
    BastianX75 BastianX75 ist offline Rookie
    Registriert seit
    Feb 2008
    Beiträge
    6
    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
     

  4. #4
    Cojote Cojote ist offline Mitglied Gold
    Registriert seit
    Oct 2006
    Beiträge
    110
    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
     

  5. #5
    BastianX75 BastianX75 ist offline Rookie
    Registriert seit
    Feb 2008
    Beiträge
    6
    Hallo,

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

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

    Code :
    1
    
    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
     

  6. #6
    Cojote Cojote ist offline Mitglied Gold
    Registriert seit
    Oct 2006
    Beiträge
    110
    Interessante Lösung. Klingt schneller und ist besser erweiterbar für mehr b's.
     

Ähnliche Themen

  1. SQL-Abfrage m:n Beziehung
    Von alkoholliger im Forum PHP
    Antworten: 6
    Letzter Beitrag: 15.04.09, 10:45
  2. (Oracle 10) Kostenfaktor einer Abfrage
    Von MichaelW im Forum Relationale Datenbanksysteme
    Antworten: 9
    Letzter Beitrag: 03.11.08, 15:58
  3. Abfrage von CLOB Spalte aus einer Oracle DB
    Von Templorials im Forum PHP
    Antworten: 0
    Letzter Beitrag: 24.07.08, 11:44
  4. [Oracle] Performanceprobleme einer Abfrage
    Von xnicnacx im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 31.01.07, 11:36
  5. AND Abfrage innerhalb einer m:n Beziehung
    Von CObject im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 26.12.06, 20:10