Datenbankabfrage über 5 Tabellen funktioniert nicht

  • Mahlzeit,

    ich habe die nachfolgende Datenbankstruktur und Inhalte in "":


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

  • Es fehlte eine Verknüpfung. Hier die ganze funktionierende Abfrage:

    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
    AND tab_groups.id = tab_users_groups.id_group