Mailinglisten-Archive |
echnaton schrieb:
>>ich hab ein problem bei der berechnung einer summe.
>>meine datenbank enthält z.B 2 Spalten eine Spalte Benutzer_id und eine
>>Spalte Punkte.
>>z.B
>>1 10
>>2 6
>>1 7
>>2 2
>>3 0
>>4 5
>>usw. also jede benutzer_id hat verschiedene Anzahl von Punkten. nun möchte
>>ich die summe der besten 8 Punkte jeder benutzer_id berechnen.
>
> hier ein Vorschlag ohne Sub-Selects, aber dafür leider mit temp-Tabellen:
>
> [...]
>
> Leider ist mir nichts Kürzeres eingefallen. Kann
> auch leider momentan nicht testen. Vielleicht
> hilft's ja trotzdem...
aber mir ...
CREATE TEMPORARY TABLE `temptable` (
`benutzer_id` BIGINT,
`punkte_id` BIGINT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`benutzer_id`, `punkte_id`) )
SELECT `benutzer_id`,
`punkte`
FROM `tbl_ergebnisse`
ORDER BY `punkte` DESC;
Das ist _ein_ Query!
SELECT `benutzer_id`,
SUM(`punkte`) AS `punkte`
FROM `temptable`
WHERE `punkte_id` <= 8
GROUP BY `benutzer_id`;
habs aber nicht probiert ...
mit Variablen lässt sich das vielleicht auch in einem Query und ohne
Temp-Tabellen lösen ...
--
Sebastian Mendel
www.sebastianmendel.de www.warzonez.de www.tekkno4u.de www.nofetish.com
www.sf.net/projects/phpdatetime www.sf.net/projects/phptimesheet
--
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive