Ilja: mysql: Wie frage ich die Punkte ab?

Beitrag lesen

moin

meine DB ist in etwa so aufgebaut:

dein deisgn ist für das, was du machen willst nicht optimal aufgebaut., deswegen bekommst du jetzt auch schwierigkeiten bei der auswahl und man muss anfangen zu "tricksen". zum glück ist SQL recht mächtig und es findet sich fast immer  eine lösung.

SELECT
sum(Punkte*
(CASE
WHEN Multi = 'ja' THEN 1
WHEN Multi = '' THEN 1
WHEN Multi = '100' THEN 1
WHEN Multi = '150' THEN 1.50
WHEN Multi = '200' THEN 2.00
WHEN Multi = 'nein' THEN 0
WHEN ISNULL(Multi) THEN 1
END)
) AS points
FROM Tabelle
WHERE
ID=2

  
erstens brauchst du keine aggregatfunktion, du behandelst eh nur einen datensatz. zweitens ist deine case logik meiner meinung nach nicht richtig implementiert. es fehlt noch die multiplikation, es fehlt deine 2. Bedingung. afür würde ich den wert noch mal mit einer zweiten case anweisung muplizieren, sprich wenn die art des spiels A entspricht, dann multiplizere mit anzahl der user, sonst 1  
  
Anzahl der user = LENGTH(USER) - LENGTH(REPLACE(USER, ',', '')) + 1  
  
PS: kann sein, dass die funktionen bei mysql in wenig anders heißen, z.b. nicht LENGTH, sondern LEN, musst du halt schauen  
  
Ilja