Entwickler-Ecke

Datenbanken - sql von drei die zweit höhsten Punkte summieren


Tabakbrummel - Mo 02.05.11 14:48
Titel: sql von drei die zweit höhsten Punkte summieren
Hallo

Mein Problem ist es per sql die zweit höhsten Punkte addieren.
z.B.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
Name   |Punkte|Punkte1|Punkte2|
-------------------------------
Maier  |1     |2      |3      |---> =5
-------------------------------
Fischer|6     |4      |5      |---> =11
-------------------------------
Bayer  |2     |0      |2      |---> =4


Also mit den addieren habe ich erst mal so gemacht.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
  with QSumme do
  begin
    Close;
    SQL.Clear;
    SQL.Add('update Tabelle set Gesamt = (Punkte + Punkte1 + Punkte2)');
    ExecSQL;
  end;


Narses - Mo 02.05.11 15:28

Moin!

Hm, Zeilensummen sind allerdings spannend... :?

Was Besseres fällt mir gerade nicht ein: :nixweiss:

SQL-Anweisung
1:
UPDATE tmp SET gesamt = punkte1+punkte2+punkte3 -IF(punkte1 < IF(punkte2 < punkte3, punkte2, punkte3), punkte1, IF(punkte2 < punkte3, punkte2, punkte3))                    
Da bin ich mal auf die SQL-Experten gespannt, das muss doch noch besser gehen. :zustimm:

cu
Narses


Tabakbrummel - Mo 02.05.11 15:41

Hallo Narses

Funktioniert leider nicht. Da kommt die Fehlermeldung
Exception-Klasse EABSException mit Meldung 'Token ',' expected, but '-' found at line 1, column 54 - Native error: 30222'


Narses - Mo 02.05.11 15:43

Moin!

user profile iconTabakbrummel hat folgendes geschrieben Zum zitierten Posting springen:
Funktioniert leider nicht. Da kommt die Fehlermeldung
Nun, ich gebe zu, dass ich es im MySQL-Dialekt getestet habe. :? (und da funktioniert´s)

Probier mal den ganzen Ausdruck zu klammern. :idea: :nixweiss:

cu
Narses


Tabakbrummel - Mo 02.05.11 16:42

Hallo Narses

Funktioniert leider auch nicht.


Narses - Di 03.05.11 08:18

Moin!

user profile iconTabakbrummel hat folgendes geschrieben Zum zitierten Posting springen:
Funktioniert leider auch nicht.
Hm, schade. Ich gebe zu, ich kenne den von dir verwendeten SQL-Dialekt nicht. Kennt das DBMS evtl. kein IF? :nixweiss:

cu
Narses


jasocul - Di 03.05.11 08:48


SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
update tabelle as ziel
   set gesamt = (select max(p) from(
                  select punkte + punkte1 as p from tabelle where ziel.name = name
                  union
                  select punkte + punkte2 as p from tabelle where ziel.name = name
                  union
                  select punkt1 + punkte2 as p from tabelle where ziel.name = name))


Keine Ahnung, ob das mit Absolute Database funktioniert. Ich habe es bei mir auch nicht geprüft und nur mal schnell hingetippt.


Tabakbrummel - Di 03.05.11 09:28

Hallo Peter

Es funktioniert mit der Absolute Database. :dance2:
Und vielen Besten dank. :beer:


jasocul - Di 03.05.11 10:28

Gern geschehen, wundert mich aber, da noch eine Klammer fehlte. :rofl:
Ist jetzt aber korrigiert. :wink: