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"
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"?