phpbar.de logo

Mailinglisten-Archive

Summenfunktion

Summenfunktion

echnaton echnaton at achetaton.net
Die Aug 17 21:38:40 CEST 2004


Hallo,

hier ein Vorschlag ohne Sub-Selects, aber dafür leider mit temp-Tabellen:

- eine temporäre Tabelle temp_punkte (temp_id, 
benutzer_id, punkte - die temp_id muss 
auto_increment sein, die benutzer_id ein 
einfaches int),
- eine temporäre Tabelle temp_anzahlen 
(benutzer_id,anzahl, loesch_id,max_temp_id)
- und evtl. eine Variable anzahl_eintraege (dann 
kannst du ggf. später die Anzahl der zu 
berücksichtigenden Einträge bequemer ändern)

SET @anzahl_eintraege=8;

TRUNCATE temp_punkte;
INSERT INTO temp_punkte(benutzer_id, punkte)
SELECT benutzer_id, punkte FROM original_benutzer_tabelle
ORDER BY benutzer_id ASC, punkte DESC;

TRUNCATE temp_anzahlen;
INSERT INTO temp_anzahlen(benutzer_id, anzahl, max_temp_id)
SELECT benutzer_id, COUNT(*), MAX(temp_id)
FROM temp_punkte
GROUP BY benutzer_id;

UPDATE temp_anzahlen
SET loesch_id = max_temp_id-anzahl+ at anzahl_eintraege+1
WHERE anzahl>@anzahl_eintraege;

DELETE temp_punkte.*
FROM temp_punkte INNER JOIN temp_anzahlen
ON temp_punkte.benutzer_id=temp_anzahlen.benutzer_id
AND temp_punkte.temp_id BETWEEN 
temp_anzahlen.loesch_id AND 
temp_anzahlen.max_temp_id;

SELECT benutzer_id, SUM(punkte) FROM temp_punkte
GROUP BY benutzer_id

Leider ist mir nichts Kürzeres eingefallen. Kann 
auch leider momentan nicht testen. Vielleicht 
hilft's ja trotzdem...

Grüße an die Füße,

Christiane

>einen schönen guten tag an alle hier in der mailingliste
>ich bin neu hier und hoffe nicht allzuviel falsch zu machen. 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.
>bis jetzt hab ich es mit einem group by benutzer_id probiert. das problem
>ist das ich dann nur die komplette summe ausrechnen kann. wenn ich es mit
>limit limitieren will dann limitiert es die benutzer_id
>meine jetzige abgrage war:
>select benutzer_id,sum(punkte) from tbl_ergebnisse group by benutzer_id
>
>wäre super wenn mir jemand helfen könnte
>mit freundlichen grüssen marco
>
>--
>Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
>-->>  http://www.4t2.com/mysql

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive