Hallo,
Ich habe eine Frage zur Logik einer Implementation für eine SQL-Datenbankabfrage:
Folgende Ausgangssituation: Ich habe ein Programm, das eine Verwaltung von Gruppenmitgliedschaften macht. Dazu gibt es zwei Tabellen: „Sachbearbeiter“ und „Gruppenmitgliedschaften“.
Die Tabellen sehen (verkürzt) so aus:
Felder in „Sachbearbeiter“: NAME, ID
Felder in „Gruppenmitgliedschaften“: GRUPPENID, MITGLIEDID
Die Logik vom Datenmodell her ist also folgende:
Die Tabelle „Gruppenmitgliedschaften“ enthält für jede Mitgliedschaft eines Sachbearbeiters in einer Gruppe einen Record. Zum Beispiel (10, 2) – dann weiss ich, Benutzer Nr. 2 ist Mitglied der Gruppe 10. Ein Sachbearbeiter kann Mitglied mehrerer Gruppen sein.
Provisorisch habe ich mal folgende Logik implementiert:
- Lesen aller Sachbearbeiter und für jeden einzelnen prüfen ob ein Record in der Gruppenzuweisungstabelle für diesen Sachbearbeiter für die Gruppe X existiert. Wenn ein solcher da ist, weis ich, dass der Benutzer Mitglieder der gesuchten Gruppe ist.
Wir ihr euch sicherlich vorstellen könnt, ist diese Vorgehensweise sehr langsam. Nun gibt es doch sicher eine Möglichkeit dies in einem Schritt zu tun, vieleicht mit einem UNION-Select oder Derartiges.
Ziel wäre eine Abfrage die mir alle alle Benutzer liefert (auch die, die nicht Mitglied der Gruppe X sind, denn diese schreibt das Programm in eine andere Auswahlliste, analog der alten Benutzerverwaltung von Windows NT 4.0). Ich brauche also die Information für jeder einzelne Sachbearbeiter ob dieser Mitglieder der Gruppe ist oder nicht, evtl. durch ein berechnetes Feld.
Da ich leider nicht so der SQL-Spezialist bin, wäre es toll wenn mir jemand zeigen könnte, wie eine solche Abfragelogik aussehen könnte
Danke & Gruss, Roger