Mahlzeit,
ich habe die nachfolgende Datenbankstruktur und Inhalte in "":
Code
tab_users
id INT Primary KEY
"1"
"2"
tab_groups
id INT PRIMARY KEY
"1"
"2"
tab_permissions
id INT PRIMARY KEY
name TEXT
"1, permission1"
tab_users_groups
id_users INT Primary KEY
id_groups INT Primary KEY
"1, 1"
"2, 2"
tab_groups_permissions
id_groups INT Primary KEY
id_permissions INT Primary KEY
"1, 1"
Alles anzeigen
Jetzt hätte ich gedacht, dass ich mit meiner nachfolgende Abfrage und der userid sowie dem permissionname ermitteln kann, ob der Nutzer die Berechtigung hat.
SQL
SELECT tab_permissions.name FROM tab_permissions, tab_groups, tab_users, tab_users_groups, tab_groups_permissions
WHERE tab_users.id = 1
AND tab_permissions.name = "permission1"
AND tab_users.id = tab_users_groups.id_users
AND tab_users_groups.id_groups = tab_groups_permissions.id_groups
AND tab_groups_permissions.id_permissions = tab_permissions.id
Warum bekomme ich 2x den permissionnamen angezeigt, wenn ich eine existierende userid eintrage, obwohl der Nutzer "keine Berechtigung hat"?