SQL Komplexeres SELECT

alles banane

Cadet 1st Year
Dabei seit
Nov. 2006
Beiträge
10
Hi Leute!

Ich hoffe, dass hier im Forum der eine oder andere herumgeistert, der in MySQL ein wenig fitter ist als ich.

Folgendes Problem, ich habe zwei Tabellen mit folgenden (relevanten) Feldern.

tbl_users
nick TEXT
rights TEXT

tbl_groups
groupid INT
rights TEXT

Die Felder rights enthalten für jede vergebene Berechtigung einen Groß- oder Kleinbuchstaben.
Jetzt möchte ich mittels einem SQL Query alle Datensätze aus tbl_users auslesen, die die Berechtigung "c" weder in ihrem eigenen rights-Feld, noch in dem ihrer Gruppe besitzen.
Gruppen werden über die GruppenID zugewiesen, welche im rights-Feld der tbl_users steht.
Wenn der User keiner Gruppe angehört, sondern individuelle Berechtigungen erhalten hat, klappt das ganz wunderbar mit

WHERE INSTR(rights, BINARY 'c') ...

Jetzt brauch ich das nur noch für die Gruppen - und zwar in einem Query! (Ist für die Seitenzahlen wichtig.)

Kann mir da jemand helfen?

Vielen Dank schonmal im Vorraus!

Greez
Nikolaus
 

Yuri_Orlov

Cadet 3rd Year
Dabei seit
Juli 2008
Beiträge
41
Hi,

du brauchst noch ein Feld in tbl_users für die logische Zuordnung zu den tbl_groubs:

TBL_USERS:
id [int(11), AI, Prim. Key]
nick [text]
rights [text]
group_id [int(11)] // Enthält die entsprechende Group ID

TBL_GROUPS:
groupid [int(11), AI, Prim.Key]
rights [text]

Zeige alle USER-Rows welche NICHT TBL_GROUPS.rights = "c" sind:

Code:
SELECT user.id, user.nick, user.rights, group.rights FROM tbl_users AS user LEFT JOIN tbl_groups AS group ON user.group_id = group.groupid WHERE user.rights != 'c' AND group.rights != 'c'
by!
 
Top