Hallo,
Ich suche einen Ansatz für ein Problem, welches sich mir stellen wird - zumindest von der Planung bzw. den Planungsgedanken her.
Zuerst eine kurze Erklärung was es am Ende werden soll. Auch wenn es den PHP-Bereich streifen wird, so denke ich, dass es doch eine Lösung in MySQL geben wird.
In einem System sind verschiedene User für verschiedene Bereiche zuständig bzw. verantwortlich. Damit dabei aber sichergestellt werden kann, dass nicht der eine oder andere viel mehr als die anderen mit arbeiten, soll es eine Beschränkung auf maximal drei Bereiche geben.
Das Ganze wäre einfacher zu lösen, wenn man vor dem Speichern (also nachdem der Speicher-Button betätigt wurde) eines neuen Bereichs prüft, ob diese Grenze schon erreicht wurde oder nicht. Aber das macht ja auch keinen Sinn, wenn man dem Bearbeiter alle Usernamen ausspuckt, jedoch nur eine gewisse Anzahl davon überhaupt in Frage kommen würden aufgrund der genannten Grenze.
Demzufolge sollten schon bei der Auswahl nur jene Usernamen erscheinen, welche diese Grenze noch nicht erreicht haben und genau dafür fehlt mir der sinnvollste Ansatz. Hätte da zwar einen, aber den empfinde ich etwas sehr umständlich, weil dieser mehrere Query's (mind. zwei) und Kontrollstrukturen/Schleifen benötigt.
Die dazugehörigen Tabellen sind ziemlich einfach aufgebaut
- bereiche (sind die Bereiche selbst)
-> id (auto_increment, primarykey)
-> bereichsname (text)
-> und noch weitere die aber hierbei nicht von relevanz sind
- zu_bereich (Relationstabelle zu User und Bereiche)
-> id (auto_increment, primarykey)
-> userid (Id des Users)
-> bereichsid (Id des Bereichs)
Ist es nun möglich, einen Query so zu gestalten, dass er die gleichen Inhalte zählt und mir nur jene ausgibt welche noch keine drei mal vorhanden sind?
So in der Art von
Also so, dass im selben Query schon die WHERE-Bedingung vom Ergebnis profitiert. Ist sowas überhaupt möglich, bzw. gibts da einen besseren Ansatz?
Der Rest drum rum (JOINs, etc.) ist kein Problem, es happert aber an der Idee zum Erklärten.
Gruss
Ich suche einen Ansatz für ein Problem, welches sich mir stellen wird - zumindest von der Planung bzw. den Planungsgedanken her.
Zuerst eine kurze Erklärung was es am Ende werden soll. Auch wenn es den PHP-Bereich streifen wird, so denke ich, dass es doch eine Lösung in MySQL geben wird.
In einem System sind verschiedene User für verschiedene Bereiche zuständig bzw. verantwortlich. Damit dabei aber sichergestellt werden kann, dass nicht der eine oder andere viel mehr als die anderen mit arbeiten, soll es eine Beschränkung auf maximal drei Bereiche geben.
Das Ganze wäre einfacher zu lösen, wenn man vor dem Speichern (also nachdem der Speicher-Button betätigt wurde) eines neuen Bereichs prüft, ob diese Grenze schon erreicht wurde oder nicht. Aber das macht ja auch keinen Sinn, wenn man dem Bearbeiter alle Usernamen ausspuckt, jedoch nur eine gewisse Anzahl davon überhaupt in Frage kommen würden aufgrund der genannten Grenze.
Demzufolge sollten schon bei der Auswahl nur jene Usernamen erscheinen, welche diese Grenze noch nicht erreicht haben und genau dafür fehlt mir der sinnvollste Ansatz. Hätte da zwar einen, aber den empfinde ich etwas sehr umständlich, weil dieser mehrere Query's (mind. zwei) und Kontrollstrukturen/Schleifen benötigt.
Die dazugehörigen Tabellen sind ziemlich einfach aufgebaut
- bereiche (sind die Bereiche selbst)
-> id (auto_increment, primarykey)
-> bereichsname (text)
-> und noch weitere die aber hierbei nicht von relevanz sind
- zu_bereich (Relationstabelle zu User und Bereiche)
-> id (auto_increment, primarykey)
-> userid (Id des Users)
-> bereichsid (Id des Bereichs)
Ist es nun möglich, einen Query so zu gestalten, dass er die gleichen Inhalte zählt und mir nur jene ausgibt welche noch keine drei mal vorhanden sind?
So in der Art von
Code:
// ... COUNT(userid) as c_UserId FROM zu_bereich WHERE c_UserId <= '2' // ...
Der Rest drum rum (JOINs, etc.) ist kein Problem, es happert aber an der Idee zum Erklärten.
Gruss
Kommentar