mysql: Problem mit Enum-Spalte
kleinerChemiker 01.09.2005 - 08:49 755 4
kleinerChemiker
Here to stay
|
mysql 4.1.12
Folgende 2 Queries liefern für die SUM()-Spalte die selben falschen Ergebnisse.
SELECT t1 . * , SUM( t2.feld2 ) FROM test1 AS t1 LEFT JOIN test2 AS t2 ON t2.feld1 = t1.feld5 WHERE t1.feld5 =2 GROUP BY t1.feld5 LIMIT 0 , 100
SELECT t1 . * , SUM( t2.feld2 ) FROM test1 AS t1 LEFT JOIN test2 AS t2 ON t2.feld1 = t1.feld5 WHERE t1.feld5 =2 GROUP BY t1.feld5 LIMIT 0 , 10
t2.feld2 ist eine enum-spalte mit den möglichen werten -1, 0, 1. Ich habe schon SUM(CAST(t2.feld2 AS SIGNED)) oder SUM( t2.feld2+0 ) (ein tip aus der doku) versucht, liefert jedoch das selbe Ergebnis. Anstatt den Werten, werden die Indizes summiert.
Jemand eine Idee? Oder bleibt nur die Konversion zu Tinyint?
tia
MIK
Bearbeitet von kleinerChemiker am 06.09.2005, 12:42 (solved)
|
cduke
Big d00d
|
Hi, ich habe gerade Google bemüht, aber nichts dazu gefunden. An Deiner Stelle würde ich zu TINYINT wechseln - ist zwar sehr ärgerlich, aber wenn es mit ENUM nicht geht. Nachdem Du mit dem Feld auch rechnen willst, fällt dann auch der Typecast weg und es läuft ein bisserl schneller. Ist halt die Frage, ob das auffällt ![:)](/images/smilies/smile.gif) greetz cduke
|
watchout
Legendundead
|
Das Ganze is ein bekanntes Problem, und wird im Manual in den Comments auführlich diskutiert... (Edit: Nicht mehr, die Comments wurden wohl mit dem neuen Design gelöscht...) Wieso zieht man Enum einem TinyInt vor wenn man erst wieder nur ziffern drin hat? TinyInt braucht sogar weniger Platz...
Egal... hast du es schon mit einem Subselect probiert? Wenn du "Glück" hast wird enum zum String in der Temptable - Genauere Infos konnte ich aber im Manual nicht finden...
|
kleinerChemiker
Here to stay
|
tinyint braucht weniger platz? dachte beides braucht gleich viel platz. enum hätte den vorteil, daß eben nur die erlaubten werte eingefügt werden könnten. außerdem wären es nicht nur zahlen, aber lös ich es halt mit tinyint, bevor ich da unnötige subselects und temptables brauch.
thx & solved
|
watchout
Legendundead
|
naja, es braucht um die Definition der Werte im Tableheader weniger Platz ![:D](/images/smilies/biggrin.gif) Aber es braucht weniger...
|