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_idIn 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_idAllerdings 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.