Zuweisung von mehreren Einträgen zu mehreren Personen
erawan
- datenbank
Hallo!
Der Betreff benennt wahrscheinlich noch nicht ganz genau meine Problemstellung, bei der ich euch um eure Hilfe bzw. Lösungtipps bitte.
Folgende Aufgabenstellung gilt es zu lösen:
ich habe z.B. 400 Projekte und 20 Benutzer, jedes dieser Projekte soll von 5 verschiedenen Benutzern bewertet werden.
wie ich mir die gewünschten Personen und Projekte zusammensuche ist mir klar
auch die Inserts in eine 3. Tabelle (mit projektid, personid, status, ...)
nur für den Ablauf dazwischen hab ich keinen konkreten Plan - sei es entweder mittels Befehlen über phpMyAdmin oder einem eigenen PHP-Script.
vermutlich werde ich die Projekte 5fach zwischenspeichern (in einer anderen Tabelle oder Array?) und dann 100 unzugewiesene Einträge davon in die zuvor erwähnte Tabelle eintragen (inkl. Check ob eine projektid bereits zu dieser personid zugeteilt wurde) und entsprechend als zugewiesen markieren
problematisch wirds dann wahrscheinlich gegen Ende wenn nicht mehr genug verschiedene Projekte übrig sind - oder denke ich bei dem allen zu kompliziert?!?
Versionshinweise zu den verwendeten Tools:
phpMyAdmin-Version - 2.11.11.3
MySQL-Client-Version: 5.0.77
Vielen Dank bereits jetzt für eure Mitdenkzeit und Hilfe.
Lg
Mahlzeit erawan,
Folgende Aufgabenstellung gilt es zu lösen:
ich habe z.B. 400 Projekte und 20 Benutzer, jedes dieser Projekte soll von 5 verschiedenen Benutzern bewertet werden.
Das bedeutet also eine n:m-Beziehung.
auch die Inserts in eine 3. Tabelle (mit projektid, personid, status, ...)
Das klingt doch schon mal nicht schlecht.
nur für den Ablauf dazwischen hab ich keinen konkreten Plan - sei es entweder mittels Befehlen über phpMyAdmin oder einem eigenen PHP-Script.
Was genau meinst Du damit? Von welchem "Ablauf" sprichst Du?
vermutlich werde ich die Projekte 5fach zwischenspeichern (in einer anderen Tabelle oder Array?)
Zwischenspeichern? Wieso das?
und dann 100 unzugewiesene Einträge davon in die zuvor erwähnte Tabelle eintragen (inkl. Check ob eine projektid bereits zu dieser personid zugeteilt wurde)
Warum solltest Du das so kompliziert tun?
und entsprechend als zugewiesen markieren
problematisch wirds dann wahrscheinlich gegen Ende wenn nicht mehr genug verschiedene Projekte übrig sind - oder denke ich bei dem allen zu kompliziert?!?
Ja.
SELECT p.projektid
, p.foo
, p.bar
FROM projekt p
WHERE (SELECT COUNT(*) AS anzahl FROM projekt2person AS p2p WHERE p2p.projektid = p.projektid) < 5
MfG,
EKKi
Hy EKKi!
n:m-Beziehung
ok daraus hätt ich kommen können sorry
oder denke ich bei dem allen zu kompliziert?!?
Ja.
das habe ich bereits vermutet
- Wenn er eine Bewertung abgegeben hat, wird diese in die Tabelle eingetragen ... auf dieser Tabelle muss natürlich einerseits ein UNIQUE-CONSTRAINT auf die Spalten "projektid" und "personid" liegen und andererseits wäre es natürlich hilfreich, wenn ein Trigger das Einfügen unterbinden würde, wenn bereits 5 Datensätze mit der "projektid" des neuen Datensatzes vorhanden wären.
UNIQUE-CONSTRAINT ? kannte ich bis dato nicht
deine Lösungsansatz wäre schon ganz gut nur soweit ich das jetzt durchblicke funktioniert dass so, dass bei jedem Aufruf der zu bewertenden Projekte die jeweilige Person andere Projekte bekommt?
Ziel wäre in meinem Fall aber dass die Projekte nur vor Beginn der Zuteilung gemischt werden und dann aber fix einer Person zugeordnet sind (sorry hatte ich vergessen zu erwähnen)
hier passt die adhoc Suche wohl nicht mehr oder?
Lg erawan
Mahlzeit erawan,
deine Lösungsansatz wäre schon ganz gut nur soweit ich das jetzt durchblicke funktioniert dass so, dass bei jedem Aufruf der zu bewertenden Projekte die jeweilige Person andere Projekte bekommt?
Richtig: alle, die noch nicht mit 5 Stimmen bewertet wurden.
Ziel wäre in meinem Fall aber dass die Projekte nur vor Beginn der Zuteilung gemischt werden und dann aber fix einer Person zugeordnet sind (sorry hatte ich vergessen zu erwähnen)
Richtig, das hattest Du. :-)
hier passt die adhoc Suche wohl nicht mehr oder?
Vermutlich nicht. Dann wäre es in der Tat "richtiger", für jede Person 5 Einträge mit z.B. zufällig generierten "projektid"s zu erstellen, bei denen dann eben nur noch die Bewertung fehlt. Die Kriterien, nach denen diese Zuordnung stattfindet, kannst bisher nur Du kennen. Wenn das tatsächlich zufällig sein kann, sollte das mehr oder weniger trivial sein:
Hole Dir für jede "personid" die ersten 5 zufällig sortierten Datensätze aller Projekte, für die weniger als 5 Datensätze in der Tabelle "person2projekt" existieren.
MfG,
EKKi
Vermutlich nicht. Dann wäre es in der Tat "richtiger", für jede Person 5 Einträge mit z.B. zufällig generierten "projektid"s zu erstellen, bei denen dann eben nur noch die Bewertung fehlt.
Ok danke, du hast mir weitergeholfen. Werde versuchen vielleicht doch deine erste Variante umzusetzen, da mir diese etwas sympathischer ist.
MfG & schönen Tag noch!