Ich möchte folgendes Problem mit einer SQL Abfrage lösen, komme aber aktuell noch nicht weiter.
Vereinfachte Tabellen:
Tabelle1
------------
t1_id
user
warteschlange
anzahl
Tabelle2
-----------
t2_id
user
platz_1
platz_2
aktuell_1
aktuell_2
Ich habe die 2 obigen Tabellen. Eine Tabelle enthält eine Warteschlange. Bzw.
genauer mehrere Warteschlangen. Jeder Eintrag in der Warteschlange enthält eine Spalte in der steht wofür er wartet (Hier nur 1 und 2), welchem Benutzer er gehört und eine Anzahl.
In die zweite Tabelle rutschen dann nach und nach Informationen aus der Warteliste.
Dazu soll in dem Query folgendes passieren:
Zuerst werden alle Einträge aus Tabelle2 gesucht, bei denen aktuell_1 = 0 ist. Dazu passend soll der Eintrag mit der kleinsten Id aus Tabelle1 gesucht werden, der dem selben benutzer gehört und in der Warteschlange 1 ist. Nun wird das Minimum von platz_1 und Anzahl genommen und in aktuell_1 eingefügt und von anzahl abgezogen.
Die leeren Einträge aus Tabelle1 löschen ich mit einem extra Query.
Mein Problem ist aktuell die beschränkung, dass nur der Eintrag mit der kleinsten ID berücksichtigt wird.
Mein Ansatz:
UPDATE tabelle1 t1, tabelle2 t2 SET t2.aktuell_1 = LEAST(t2.platz_1,t1.anzahl), t1.anzahl = t1.anzahl - t2.aktuell_1 WHERE t2.aktuell_1 = 0 AND t1.user = t2.user AND t1.warteschlange = 1
So nimmt er aber nun dummerweise irgendeinen Eintrag von t1. Ich müsste aber den mit der niedrigsten ID haben. Jemand ne Idee wie ich das hinbekommen?
Danke
CC
Vereinfachte Tabellen:
Tabelle1
------------
t1_id
user
warteschlange
anzahl
Tabelle2
-----------
t2_id
user
platz_1
platz_2
aktuell_1
aktuell_2
Ich habe die 2 obigen Tabellen. Eine Tabelle enthält eine Warteschlange. Bzw.
genauer mehrere Warteschlangen. Jeder Eintrag in der Warteschlange enthält eine Spalte in der steht wofür er wartet (Hier nur 1 und 2), welchem Benutzer er gehört und eine Anzahl.
In die zweite Tabelle rutschen dann nach und nach Informationen aus der Warteliste.
Dazu soll in dem Query folgendes passieren:
Zuerst werden alle Einträge aus Tabelle2 gesucht, bei denen aktuell_1 = 0 ist. Dazu passend soll der Eintrag mit der kleinsten Id aus Tabelle1 gesucht werden, der dem selben benutzer gehört und in der Warteschlange 1 ist. Nun wird das Minimum von platz_1 und Anzahl genommen und in aktuell_1 eingefügt und von anzahl abgezogen.
Die leeren Einträge aus Tabelle1 löschen ich mit einem extra Query.
Mein Problem ist aktuell die beschränkung, dass nur der Eintrag mit der kleinsten ID berücksichtigt wird.
Mein Ansatz:
UPDATE tabelle1 t1, tabelle2 t2 SET t2.aktuell_1 = LEAST(t2.platz_1,t1.anzahl), t1.anzahl = t1.anzahl - t2.aktuell_1 WHERE t2.aktuell_1 = 0 AND t1.user = t2.user AND t1.warteschlange = 1
So nimmt er aber nun dummerweise irgendeinen Eintrag von t1. Ich müsste aber den mit der niedrigsten ID haben. Jemand ne Idee wie ich das hinbekommen?
Danke
CC
Kommentar