Mehrere Tabellen: Nur Treffer falls alle Subelemente besimmtes Kritierum erfüllen

zerwi

Mitglied
Hallo zusammen,

ich hänge bei folgendem Problem:

5 Tabellen. Folgend eine vereinfachende Darstellung.

Tabelle A
a.id a.description

Tabelle B
b.id b. description

Tabelle C
c.id a.id. b.id description

Tabelle D (B und E sind in n:m Beziehung-> Zwischentabelle D)
b.id e.id

Ziel: Alle a.ids bei denen ALLE (und daran scheiterts) b.ids einem bestimmten e.id zugwiesen sind.

Beispiel Tabelle C

c.id a.id. b.id
1 1 1
2 1 2
3 1 3

Aber nur b.id 1 und 2 sind dem bestimmten Wert e.id zugewiesen.

Folgende Abfrage:

select distinct id from a

left join c on a.id =c.id_a

left join b on b.id = c.id_b

left join d on d.id_b = b.id

where d.id_b in (SELECT id_b from d where id_e = 'XXX');

Ergebnis: Auch a.id = 1, was klar ist weil ja c.id 1 und 2 das Kriterium erfüllen ..

Was ich benötige: So eine Art Schlüsselwort 'Zeige nur diejenige Elemente bei denen ALLE subelemente ein bestimmtes Kriterium erfüllen'

Ich hoffe echt es kann mir hier jemand weiterhelfen.


mfg
zerwi
 
Hallo,

probier es mal so:
SQL:
SELECT
  a.id
FROM
  a
INNER JOIN
  c ON (a.id = c.a_id)
INNER JOIN
  d ON (d.b_id = c.b_id)
GROUP BY
  a.id
HAVING
  SUM(d.e_id <> 'XXX') = 0

Grüße,
Matthias
 
Zuletzt bearbeitet von einem Moderator:
Zurück