[MYSQL] Join Anfrage
Borewa
- datenbank
0 Borewa
Guten Tag,
ich habe ein kleines einfaches Rechtesystem und möchte dazu in Rechtekategorie blöcken, meine Rechte pro User anzeigen, nur kriege ich meine MYSQL Abfrage nicht so hin.
+-------------------------+
|wis_kategorie |
+-----------------+-------+
|wis_kategorie_id | name |
| | |
+-----------------+-------+
+---------------------------------------------------+
|wis_rechte |
+--------------+------+-----------------------------+
|wis_rechte_id | name | fk_wis_rechte_kategorien_id |
| | | |
+--------------+------+-----------------------------+
+--------------------------------------+
|rechte_mitarbeiter |
+-----------------+--------------------+
|fk_wis_rechte_id | fk_mitarbeiter_id |
| | |
+-----------------+--------------------+
Die Mitarbeitertabelle lasse ich mal aus, das einzige interessante wäre die Mitarbeiter_id, bzw. der Username.
Die Wis_rechte Tabelle hat in wirklichkeit auch noch weitere Felder wie z.B. eine Beschreibung, welche aber für mein Problem auch nicht von bedeutung sind.
Soviel zum Aufbau.
Nun würde ich gern in Blöcken (Kategorien) die User mit ihren Rechten anzeigen lassen.
+--------------------------------------+
|Kategorie 1 |
+-----------------+---------+----------+
| | rechte1 | rechte1 | ... |
+-------+---------+---------+----------+
| user1 | TRUE | FALSE | |
+-------+---------+---------+----------+
| ... | ... | ... | |
+-------+---------+---------+----------+
Das True/False sollen Checkboxen zum Setzen oder deaktivieren sein, wer wert der da steht wäre im grunde egal. Entweder steht da was und es ist true oder eben nicht und es ist false.
Gibt es eine Möglichkeit dies so ähnlich mit MYSQL abzufragen?
Ohne das ich da 2-4 unter MYSQL Abfragen mit Schleifen zum anzeigen machen muss?
Die Blöckte(Kategorien) kommen später natürlich in eine schleife und werden öfters angezeigt aber für die Abfrage würde ja erstmal 1 Block (Kategorie) reichen.
SELECT username, fk_wis_rechte_id
FROM mitarbeiter
LEFT OUTER JOIN rechte_mitarbeiter ON mitarbeiter_id = fk_mitarbeiter_id
LEFT JOIN wis_rechte ON wis_rechte_id = fk_wis_rechte_id
Damit hab ich es probiert, aber so 100%ig ist es nicht das was ich suche.
Hätte lieber Pro Datensatz einen Mitarbeiter und als Attribute eben alle Rechte, ggf auch nur alle gesetzten.
Obwohl die Rechtekombination Mitarbeiter_id <-> Rechte_id auch nicht so gut ist. Besser wäre wohl diese Verknüpfung und ein weiteres Attribut was ich als True/False setze.
SO müsste ich ja jedesmal die Beziehung löschen wenn der User seine Rechte entzogen bekommt. Damit würde sie ja bleiben und ich müsste nur das eine Attribut ändern, aber das hat ja grundsätzlich nichts mit meinem Problem zutun.