Hallo PHPler und SQLer,
derzeit versuche ich ein Beispiel aus einem PHP-Buch zu erweitern, was bis zu einem Punkt auch klappte. Es ging um eine WHILE-Schleife, die sich wiederholt, bis ein Wert X 0 ist. Darin integriert ist eine IF-ELSE-Anweisung, die unterscheidet, ob der letzte DB-Eintrag größer oder kleiner X ist.
Nun aber soll folgendes verändert werden.
Wo die Datenbank noch aus einem Index id_s und count bestand, wird sie nun um die grp_id erweitert. Die Grp_id ist eine Obergruppe für Count.
Die Tabelle sähe somit so aus:
ID_s | Grp_id | Count
1 - 1 - 50
2 - 1 - 75
3 - 1 - 120
4 - 2 - 90
5 - 2 - 50
6 - 3 - 80
7 - 3 - 90
8 - 3 - 20
Folglich liegt die Summe in Gruppe 1 bei 245, bei Gruppe 2 140 und in Gruppe 3 bei 190.
Jetzt der Code:
Eigentlich sollte das Ergebnis dann sein:
ID_s | Grp_id | Count
1 - 1 - 50
2 - 1 - 75
3 - 1 - 20
4 - 2 - 40
6 - 3 - 80
7 - 3 - 10
Doch statt dessen sieht es dann so aus:
ID_s | Grp_id | Count
1 - 1 - 50
2 - 1 - 75
3 - 1 - 120
4 - 2 - 90
5 - 2 - 50
6 - 3 - 80
7 - 3 - 10
Inzwischen ist mir zwar klar, dass der Gebrauch von Group by keinen Sinn ergeben mag, aber wo mag der Fehler liegen? Ich habe - achtung, Hinweis - bereits in einem Forum nachgefragt (mit dem Hinweis, dass ich mich hier erkundigen werde), leider aber gab es bisher noch keine Lösung.
Zwar gab es einen Ansatz mit
und
. Dies führte aber leider nicht zum erwarteten Ergebnis trotz einiger Tüftelei.
Vielleicht hat einer von euch ene Idee.
Einen Dank im Vorraus,
krampi
derzeit versuche ich ein Beispiel aus einem PHP-Buch zu erweitern, was bis zu einem Punkt auch klappte. Es ging um eine WHILE-Schleife, die sich wiederholt, bis ein Wert X 0 ist. Darin integriert ist eine IF-ELSE-Anweisung, die unterscheidet, ob der letzte DB-Eintrag größer oder kleiner X ist.
Nun aber soll folgendes verändert werden.
Wo die Datenbank noch aus einem Index id_s und count bestand, wird sie nun um die grp_id erweitert. Die Grp_id ist eine Obergruppe für Count.
Die Tabelle sähe somit so aus:
ID_s | Grp_id | Count
1 - 1 - 50
2 - 1 - 75
3 - 1 - 120
4 - 2 - 90
5 - 2 - 50
6 - 3 - 80
7 - 3 - 90
8 - 3 - 20
Folglich liegt die Summe in Gruppe 1 bei 245, bei Gruppe 2 140 und in Gruppe 3 bei 190.
Jetzt der Code:
PHP-Code:
$x = 100;
$last = "SELECT count, grp_id, id_s FROM testnull GROUP BY grp_id DESC LIMIT 1";
$result2 = mysql_query($last) or die(mysql_error());
WHILE($row2 = mysql_fetch_array($result2))
{
$count = $row2['count'];
$id_s = $row2['id_s'];
$grp = $row2['grp_id'];
}
WHILE ($x>0)
{
IF ($x<$count)
{
$count = $count - $x;
echo "$x ";
$exdel3 = "UPDATE testnull SET count = $count WHERE grp_id = $grp_id GROUP BY grp_id DESC LIMIT 1";
$delorder2 = mysql_query($exdel3);
$x = 0;
}
ELSE
{
$x = $x-$count;
echo "$x ";
$delete = "DELETE FROM testnull GROUP BY grp_id DESC LIMIT 1";
$loesch = mysql_query($delete);
}
}
ID_s | Grp_id | Count
1 - 1 - 50
2 - 1 - 75
3 - 1 - 20
4 - 2 - 40
6 - 3 - 80
7 - 3 - 10
Doch statt dessen sieht es dann so aus:
ID_s | Grp_id | Count
1 - 1 - 50
2 - 1 - 75
3 - 1 - 120
4 - 2 - 90
5 - 2 - 50
6 - 3 - 80
7 - 3 - 10
Inzwischen ist mir zwar klar, dass der Gebrauch von Group by keinen Sinn ergeben mag, aber wo mag der Fehler liegen? Ich habe - achtung, Hinweis - bereits in einem Forum nachgefragt (mit dem Hinweis, dass ich mich hier erkundigen werde), leider aber gab es bisher noch keine Lösung.
Zwar gab es einen Ansatz mit
PHP-Code:
$exdel3 = "UPDATE testnull SET count = $count
WHERE grp_id = $grp_id
AND id_s = $id_s";
PHP-Code:
DELETE FROM testnull
WHERE grp_id = $grp_id
AND id_s = $id_s;
Vielleicht hat einer von euch ene Idee.
Einen Dank im Vorraus,
krampi
Kommentar