Markus: sql - die drei größten spaltensummen

Beitrag lesen

hi olaf,

also die tabelle sieht so aus

+----+-----+-----+-----+ ... +-----+
| id | id2 | 001 | 002 |     | 150 |
+----+-----+-----+-----+ ... +-----+

die 150 ist nur ein beispiel, sie kann auch später erweitert werden, das ändert nicht viel an der abfrage...

die anzahl der zeilen ist auch variabel...

ich habe bei meiner zuerst erwähnten vorgehensweise nachgesehen, welche spalten die tabelle hat, habe dann die ersten beiden spalten rausgenommen aus dem ergebnis und den rest mit einer foreach durchlaufen

SELECT SUM(001) FROM table;
SELECT SUM(002) FROM table;
...
SELECT SUM(150) FROM table;

und in einen array gepackt...

aber das geht bestimmt direkt über einen langen sql-befehl, der mir nicht in den sinn kommt und zum zweiten entsteht bei dem array ab der zahl 100 ein seltsames phänomen, wie ich es bereits beschreiben hatte!

gruß

markus

Hi Markus,

ich würde die MySQL-Tabelle anders anlegen:

+----+---------------+------+
| id | spaltennummer | wert |
+----+---------------+------+

damit bist Du wesentlich flexibler und hast auch keine Probleme, wenn statt 150 plötzlich 500 Spalten verlangt werden. Bei Deiner jetzigen Tabelle hättest Du dann 150x200 = 30000 Zeilen. Das stellt für Datenbanken aber überhaupt kein Problem dar. Bei Deinem jetzigen Datenmodell mußt Du alles vom PHP-Code errechnen lassen und damit auch 150 SQL-Anfragen anstatt einer stellen.

Gruss Olaf