Etwas "kompliziertere?" Abfrage
am 20.09.2006 16:43:11 von Peter StossHallo,
ich habe drei Tabellen (MySQL 4.0 steht zur Verfügung).
Tabelle 1: Benutzer
id,name
1,irgendwer
2,einanderer
3,nocheinanderer
Tabelle 2 verwaltet die Codes und wer dafür zuständig sein darf
(einige tausend)
id,code,benutzer
1,ABC,1
2,DEF,2
3,DEF,3
4,GHI,3
5,JKL,3
Tabelle 3: Codezuordnungen
id,code_a,code_b
1,ABC,DEF
2,DEF,ABC
3,DEF,GHI
4,GHI,ABC
Ziel ist es nun aus Tabelle 3 DIE Codes rauszusuchen, die z.B. von
Benutzer 1 verwaltet werden können. Wichtig dabei: es reicht, wenn
einer der beiden Codes (code_a oder code_b) von dem Benutzer verwaltet
werden darf.
Im Beispiel also bekommen angezeigt aus Tabelle 3:
Benutzer 1 (ihm ist lt. Tabelle nur Code ABC zugeordnet):
1,ABC,DEF
4,GHI,ABC
Benutzer 2 (ihm ist lt. Tabelle DEF zugeordnet):
1,ABC,DEF
2,DEF,ABC
3,DEF,GHI
Benutzer 3 (ihm ist lt. Tabelle DEF und GHI zugeordnet)
alle, weil überalll mind. DEF oder GHI drin vorkommt
Verständlich? Da ein Benutzer mehrere tausend Codes haben kann, will
ich ja nicht erst bei jedem User mit ner While-Schleife tausend mal mit
ner einzelnen Select-Abfrage a la "SELECT id FROM table2 WHERE code =3D
code_a OR code =3D code_b" in den Benutzerrechte-Table reinspringen und
gucken, ob es eine Zuordnung gibt. Das wären für jede Abfrage
tausende von extra-Queries in ner While-Schleife.
Hat jemand rat?
Peter.