bekomm query nicht wie gewünscht hin



  • tag,
    Also ich hab folgende Tabellen:
    Mitarbeiter: responder_id, name, etc
    Reaume: raum_id, beschreibung, kategorie
    berechtigungen: raum_id, responder_id

    In Mitarbeiter sind halt Mitarbeiter, in Räume Räume und in Berechtigungen steht drin, wer zu welchem Raum Zugriff hat.

    Ich will jetzt alle Einträge aus Raum haben, zu denen ein Mitarbeiter noch KEINEN Zugriff hat und zwar jeden Raum nur einmal.

    Hab das Momentan so
    select concat(räume.raum_id,' - ', beschreibung) as r from räume left join berechtigungen on berechtigungen.raum_id = räume.raum_id where berechtigungen.responder_id is null or berechtigungen.responder_id != "+nummer+" group by räume.raum_id

    Allerdings gibt er mir auf diese Weise auch die Räume, wenn ein weiterer Mitarbeiter, ausser dem grad gewählten, zum Raum Zugriff hat.
    Wenn ich also die Räume von Mitarbeiter 2 haben will, zu denen dieser keinen Zugriff drauf hat, dann habe ich bei obiger Query auch Räume drin zu denen er Zugriff hat, wenn mindestens ein anderer Mitarbeiter in den Raum darf.

    Als Datenbank habe ich eine etwas angerostete mysql Datenbank, also mit Subquerys oder so wirds auch nix =[

    Wär heldenhaft, wenn mri da mal jemand helfen könnte.

    greetz
    dreaddy



  • Kein Wunder bei der Where-Bedingung (zeige alle DS in Table-Berechtigungen an in denen kein MA eingetragen ist oder ein Anderer MA als der gewählte). ?!?

    Wenn eine not exists-Abfrage halt nicht geht, dann stell die DB um

    Table Berechtigungen
    raum_id, responder_id, Berechtigung (JA,NEIN,EIN BISCHEN ...)

    Das ergibt dann einen einfachen select

    select *
    from Berechtigungen
    where responbder_id = 'Nummer der Mitarbeiters'
    and Berechtigung = 'NEIN' (man könnte auch ein tinyint-> JA/NEIN oder smallint-> Abstufungen nehmen)

    OK es geibt mehr DS in Berechtigungen, nämlich genau 1 je MA und Raum aber Du kannst einfach abfragen. 🤡


Anmelden zum Antworten