Nach Upgrade 4.1 > 5.0: Problem mit Subqueries
am 27.04.2007 15:46:33 von Sebastian SuchanekHallo NG!
Seit ich vor Kurzem meine MySQL-Version von 4.1 auf 5.0
aktualisiert habe, habe ich ein Problemchen, dem ich nicht so
recht beikomme.
Folgende Abfrage auf eine Tabelle liefert absolute Nonsens-Werte
(fünfstellige Werte für 'quota'[1]):
SELECT COUNT(f_ID) AS sells,
COUNT(f_ID)/(SELECT COUNT(f_ID)
FROM finished
WHERE f_VK = f.f_VK
)*100 AS quota,
FROM finished f
WHERE f_VK IS NOT NULL
AND f_Anzahl > 0
GROUP BY f_VK
ORDER BY sells DESC LIMIT 20
Noch kurioser dabei ist, daß die Subquery für sich alleine
genommen korrekte Werte liefert. D.h., bei dieser Abfrage
SELECT COUNT(f_ID) AS sells,
COUNT(f_ID)/(SELECT COUNT(f_ID)
FROM finished
WHERE f_VK = f.f_VK
)*100 AS quota,
(SELECT COUNT(f_ID)
FROM finished
WHERE f_VK = f.f_VK
) AS subresult
FROM finished f
WHERE f_VK IS NOT NULL
AND f_Anzahl > 0
GROUP BY f_VK
ORDER BY sells DESC LIMIT 20
enthält 'subresult' - wie auch 'sells' - die richtigen Werte.
Nur die Berechnung der eigentlichen Verkaufsquote schlägt fehl.
Eine ganze Reihe ähnlich Abfragen, die auch Anteile in Prozent
berechnen, funktionieren aber nach wie vor auch einwandfrei.
Tschüs,
Sebastian
_____
Anmerkungen:
[1] BTW: Ich kann die Zahlenwerte auch nicht durch "kreative
Zahlenakrobatik" rekonstruieren, d.h. ich kann den Fehler
nicht darauf einkreisen, daß MySQL z.B. ein "GROUP BY"
versemmeln würde o.ä.
--
http://www.baumaschinen-modelle.net
http://www.schwerlast-rhein-main.de