SQL N:M Beziehung in DropDownBox anlegen

  • Bin noch nicht so eingelesen in SQL allerdings grundkenntnisse sind vorhanden...


    Ich habe ein Rechtesystem erstellt mit den Tabellen Nutzer, Gruppen, Nutzer_Gruppe, Rechte, Gruppen_Rechte.


    Zitat

    Der Entwickler hat eine DropDown-Box mit allen Gruppen.
    Dazugehöriges Statement:
    „SELECT g.id, g.gruppenname FROM `gruppe` AS g ORDER BY g.gruppenname;“


    Hier ergibt sich folgendes Problem:
    Wurde dem Benutzer bereits eine Gruppe zugeordnet, steht diese immer noch in der DropDown-Box. Damit könnte es passieren, dass ein Benutzer mehrfach einer Gruppe zugeordnet wird. Dies könnte er programmatisch lösen, will er aber nicht. Er will als Ergebnis das SQL Statements wirklich nur die Gruppen haben, die dem Benutzer noch nicht zugeordnet sind.


    Ich versuche das ganze mit einem SubSelect aufzubauen... nur scheiter ich quasi schon am Anfang.
    ANY1 KNOWS BEST?


    PS. also ich brauche im Grunde nur, dass wenn der User XXX Administrator ist, und ich ihm auf einer Grafik Rechte zuteilen will, dass dann nicht mehr Administrator zugewiesen werden kann, sondern nurnoch alle anderen Rechte, die es gibt, welche er noch nicht hat.

  • Perfomanter ist die Nutzung von NOT EXIST. Nicht als Kritik, sondern als Info sehen :)


    Code
    select g.id_gruppen, g.gruppenname from gruppen g
    where  NOT EXISTS(
    select 1 
     from  nm_nutzer_gruppen ng,
      nutzer n
    where 
    ng.fk_id_gruppen =  g.id_gruppen
    and n.id_nutzer = ng.fk_id_nutzer
    and n.nickname = 'Egon');


    Ungetestet :)


    Alternativ kannst du auch mit MINUS arbeiten, aber das viel sinnvoller ist bezweifel ich: