Entwickler-Ecke
Datenbanken - SQL Update des Ranking
Tabakbrummel - Di 25.01.11 17:46
Titel: SQL Update des Ranking
Hallo
Ich habe erst mal ein kleines Ranking erstellt, das Funktioniert auch.
Mein Problem ist das Updaten, da kommt die Fehlermeldung "Exception-Klasse EABSException mit Meldung 'Token ',' expected, but 'FROM' found at line 3, column 1 - Native error: 30222'."
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure TForm1.Button1Click(Sender: TObject); begin with ABSQuery1 do begin Close; SQL.Clear; SQL.Add('UPDATE Rank'); SQL.Add('SET Platz = RankAuswertung.Platz'); SQL.Add('FROM Rank'); SQL.Add('INNER JOIN'); SQL.Add('(SELECT ID, a1.Name,a1.Punkte,COUNT(a2.Punkte) Platz'); SQL.Add('FROM Rank a2,Rank a1'); SQL.Add('WHERE a1.Punkte < a2.Punkte or (a1.Punkte = a2.Punkte and a1.Name = a2.Name)'); SQL.Add('GROUP BY a1.Name,a1.Punkte'); SQL.Add('ORDER BY a1.Punkte DESC'); SQL.Add('From Rank) as RankAuswertung'); SQL.Add('on Rank.ID = RankAuswertung.ID'); ExecSQL; end; end; |
Kann mir einer Bitte helfen. :?: :roll:
Und besten Dank im Vorraus.
Martok - Di 25.01.11 18:05
Du mischt hier ein UPDATE mit einem SELECT-Statement... bzw noch nicht mal ein ganzes Statement, eher so Fragmente.
Ehrlich gesagt ist mir auch nicht so wirklich klar was genau das Ganze dann tun soll - sieht etwas sehr verworren aus.
Tabakbrummel - Di 25.01.11 18:11
Hallo Martok
Also ich möchte aus den Statement Ranking das es in der Tabelle gespeichert wird.
Delphi-Quelltext
1: 2: 3: 4: 5:
| SQL.Add('SELECT a1.Name, a1.Punkte, COUNT(a2.Punkte) Platz'); SQL.Add('FROM Rank a2, Rank a1'); SQL.Add('WHERE a1.Punkte < a2.Punkte or (a1.Punkte = a2.Punkte and a1.Name = a2.Name)'); SQL.Add('GROUP BY a1.Name,a1.Punkte'); SQL.Add('ORDER BY a1.Punkte DESC'); |
Und das mit den Ranking Funktioniert soweit.
Tabakbrummel - Do 27.01.11 19:55
Hallo
Nun formeliere ich mal die Frage anders.
Ich möchte aus den Code das Ranking Updaten. Wie kann ich bewerkstelligen, oder geht das ränking auch anders? (Absoltute Database hat aber kein Rank()over)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| with ABSQuery1 do begin Close; SQL.Clear; SQL.Add('select R1."Name", R1."Punkte", count(R2."Punkte") as "Platz" '); SQL.Add('from "Rank" R1, "Rank" R2'); SQL.Add('where ((R1."Punkte" < R2."Punkte") or (R1."Punkte" = R2."Punkte" and R1."Name" = R2."Name"))'); SQL.Add('group by R1."Punkte", R1."Name" '); SQL.Add('order by R1."Punkte" desc'); open; end; |
den orginalcode habe aus der Quelle
http://www.1keydata.com/sql/sql-rank.html
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!