kaepten: Suche Hilfe bei SQL-Statement

Beitrag lesen

Hi Cheatah

Es um folgendes Datenmodell

Tabelle : Dokumente
Tabelle : Gruppen
Tabelle : DokumenteZuGruppen

Es gibt also Dokumente die über die Tabelle DokumenteZuGruppen an Gruppen angehängt werden. (Oder umgekehrt, Gruppen beinhalten Dokumente). Einfache Sache eigentlich.

Mein Ziel: Ich möchte alle Dokumente finden, die in einer oder mehreren Gruppe vorkommen - und zwar _zwingend_ vorkommen.

Beispiel konkreter Daten (Inhalt Tabelle DokumentZuGruppen):

Dokument1 = Gruppe1
Dokument1 = Gruppe2
Dokument1 = Gruppe3
Dokument2 = Gruppe2
Dokument2 = Gruppe3
Dokument3 = Gruppe1
Dokument3 = Gruppe3

Nochmals mein Ziel: Ich will die Dokumente finden die in Gruppe1 UND in Gruppe2 vorkommen, alle anderen will ich nicht. Es darf also nur Dokument1 gefunden werden!

Ich habe schon eine programmierte Lösung, die mir aber schlecht vorkommet in Bezug auf Performance. Folgender Programmablauf mit mehreren Abfragen:

1. Ich suche erstmal (SQL mit IN) alle Dokumente (Id) die entweder in Gruppe1 oder Gruppe2 vorkommen. Das gibt mir mal eine eingeschränkte Menge.

2. Dann hole ich in einem Loop für jedes dieser gefunden Dokumente die Gruppen in denen es ist und prüfe, ob im Resultat für ein Dokument diejenigen Gruppen vorkommen, die ich suche (Gruppe1 und Gruppe2 muss vorkommen). Das mache ich in einem Loop über die Resultatmenge und baue eine Liste auf mit den ID's der Dokumente die wirklich matchen.

Wie könnte ich das vereinfachen? Ich bin auch bereit, das Datenmodell  zu ändern...

kaepten