id rightid groupid
2 1 1
3 2 1
4 2 2rightid 2 weist hier auf groupid 1 und 2. Ich hätte aber gerne die rightid, die nur auf groupid 2 weist.
Was weist hier worauf? Im MySQL-Sinne weist hier nix, so weise ist MySQL nicht ;-) Wenn Du nur den Datensatz haben willst, bei dem rightid 2 und groupid 2 ist, dann sollte das vielleicht als Bedingung in Deinem Statement untergebracht werden.
Ich dachte man kann sich das so gut vorstellen, aber gut dann versuch ichs anders zu erklären:
Die oben genannte Tabelle verbindet die Tabelle rights mit groups, mit rightid und groupid perspektivisch.
In meinem Beispiel ist rightid 2 mit groupid 1 und groupid 2 verbunden.
Nun möchte ich mit einem Query die rightid herausfinden, bei der die groupid 2 NUR EINE rightid verbindet.
Ein Beispiel:
groupid 2 ist mit rightid 2 verbunden, aber rightid 2 ist auch mit groupid 1 verbunden. groupid 2 soll aber eine alleinstehende rightid haben. Also die rightid die auf groupid 2 "zeigt" oder "weist" soll auf keine andere groupid zeigen.
Da es in meinem obigen Beispiel aber keine rightid gibt, die NUR auf groupid 2 zeigt, gibt der query also kein Ergebnis aus.
Hm,
abgesehen davon, das ich den ursprünglichen Select etwas umfangreich finde, wenn Du nur groupid = 2 haben willst sähe mein Code so aus.
... where groupid = 2
sonstige Bedingungen
Nein der Query würde mir rightid 2 ausgeben, rightid 2 "zeigt" aber auch auf groupid 1 und genau das möchte ich nicht.
Die einzige Möglichkeit die ich momentan sehe, ist dass ich die tabellen oben solange mit sich selbst verbinde wie es gleiche rightids gibt (also: user_permissions AS up1 JOIN user_permissions AS up2 ON up1.rightid = up2.rightid) und dann in einem where abfrage schaue ob eine groupid gleich 2 ist und die anderen ungleich aller anderen möglichen groupids sind.
Genau das hab ich mit meinem Query versucht:
SELECT up1.rightid FROM user_permissions AS up1 JOIN user_permissions AS up2 ON up1.rightid = up2.rightid WHERE up1.groupid = '2' AND up2.groupid <> '1' LIMIT 0,1
Doch leider nicht mit dem gewünschten Erfolg
Danke
Gruß Sören