Hallo Thomas,
ich habe da mal was vorbereitet.
Bitte mal alle Daten löschen aus der Tabelle results und nur diese 2 Datensätze einfügen:
INSERT INTO `results` (`ID`, `resultDate`, `id_company`, `factor`, `L`, `M`, `N`) VALUES
(8056, '2011-12-15', 331, '190.00', '0.1800', '0.0000', '0.0000'),
(8057, '2011-12-15', 331, '54.00', '0.2100', '0.0000', '0.0000');
Die ursprüngliche Abfrage
SELECT results.resultDate,
MAX(
(results.L * 1734.90 * 0.03225807)+(results.M * 33.50 * 0.03225807)+(results.N * 8370.00 * 0.01000000)
) AS value,
MAX(
((results.L * 1734.90 * 0.03225807) * results.factor) / 31 +
((results.M * 33.50 * 0.03225807) * results.factor) / 31 +
((results.N * 8370.00 * 0.01000000) * results.factor) / 31
) AS score
FROM results
WHERE resultDate <= '2011-12-15' AND resultDate > ('2011-12-15'- INTERVAL 3 DAY)
GROUP BY id_company,resultDate ORDER BY value DESC
ergibt.
+------------+-------------------+-------------------------+
| resultDate | value | score |
+------------+-------------------+-------------------------+
| 2011-12-15 | 11.75255038503000 | 61.74150893518064516129 |
+------------+-------------------+-------------------------+
1 row in set (0.00 sec)
Soweit so gut.
Und dieses Ergebnis sollte nun ergänzt werden, um den jeweiligen L-Wert, der zu "value" bzw. "score" geführt hat.
in diesem Fall wären das:
value: 11.75255038503000
valueL: 0.21
score: 61.74150893518064516129
scoreL: 0.18
Das ist das kleinste Beispiel ... (in "echt" handelt es sich im ca. 25 Spalten und den berechneten Werten daraus)
Aber ich denke, das zeigt es ganz gut.
Bis dahin
Mark