Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Update (https://www.delphipraxis.net/163952-sql-update.html)

Uwe 111 23. Okt 2011 14:02

Datenbank: Absolute Database • Version: ? • Zugriff über: ?

SQL Update
 
Hallo

Delphi-Quellcode:
SELECT a1.Name, a1.Sales, COUNT(a2.sales) Sales_Rank
FROM Total_Sales a1, Total_Sales a2
WHERE a1.Sales <= a2.Sales or (a1.Sales=a2.Sales and a1.Name = a2.Name)
GROUP BY a1.Name, a1.Sales
ORDER BY a1.Sales DESC, a1.Name DESC;
Result:
Name Sales Sales_Rank
Greg 50 1
Sophia 40 2
Stella 20 3
Jeff 20 3
Jennifer 15 5
John 10 6

Und nun zu mein Problem:
Wie kann ich es hinbekommen das Sales_Rank updatet?

MFG
Uwe 111

Uwe Raabe 23. Okt 2011 14:20

AW: SQL Update
 
Ich verstehe vielleicht nicht, was du willst, aber Sales_Rank wird doch während des SELECT über COUNT(a2.sales) ermittelt. Sobald du das SELECT nochmal auf die aktualisierte Datenbank los lässt, wird es auch die aktuellen Daten liefern.

Uwe 111 23. Okt 2011 14:32

AW: SQL Update
 
Hallo

Ich möchte das die Spalte Sales_Rank für immer gespeichert wird.

MFG
Uwe 111

Uwe Raabe 23. Okt 2011 14:38

AW: SQL Update
 
Welcher Wert soll denn da gespeichert werden? Oder ist die Datenbank statisch und ändert sich nicht mehr? Normalerweise vermeidet man es, berechnbare Werte abzuspeichern, da es recht aufwändig ist, diese immer synchron zu halten.

Vielleicht holst du mal etwas weiter aus, damit man deine Absichten versteht.

Uwe 111 23. Okt 2011 14:53

AW: SQL Update
 
Hallo


Also als erste Wertet ich die Spalte Sales_Rank aus.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
 with ABSQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT a1.Name, a1.Sales, COUNT(a2.sales) Sales_Rank');
    SQL.Add('FROM Total_Sales a1, Total_Sales a2 ');
    SQL.Add('WHERE a1.Sales <= a2.Sales or (a1.Sales=a2.Sales and a1.Name = a2.Name) ');
    SQL.Add('GROUP BY a1.Name, a1.Sales ');
    SQL.Add('ORDER BY a1.Sales DESC, a1.Name DESC;');
    Open;
  end;
end;
Nun ist mein Problem das die Werte der Spalte Sales_Rank nicht dauerhaft gespeichert sind.


Es sollen die Werte von Sales_Rank gespeichert werden.
1
2
3
3
5
6

MFG
Uwe 111

DeddyH 23. Okt 2011 14:55

AW: SQL Update
 
Ich schließe mich Uwe an: wozu sollen die gespeichert werden? Sobald sich in den betreffenden Daten etwas ändert, stimmen die gespeicherten Zahlen doch u.U. gar nicht mehr.

Uwe 111 23. Okt 2011 15:01

AW: SQL Update
 
Hallo

Ich Schreibe gerade ein kleines Rankingprogramm für unsern Skatverein.
Da sich ja die Punkte (Beispiel Sales) sich nicht verändern will ich das die Plätze (Beispiel Sales_Rank) dauerhaft speichern.

MFG
Uwe 111

DeddyH 23. Okt 2011 15:18

AW: SQL Update
 
Dann nimm doch Dein bisheriges Statement und benutze das für ein Einfüge-Statement.
SQL-Code:
INSERT INTO Tabelle(Feldliste)
SELECT Feldliste...

Uwe Raabe 23. Okt 2011 16:09

AW: SQL Update
 
Zitat:

Zitat von DeddyH (Beitrag 1132042)
Dann nimm doch Dein bisheriges Statement und benutze das für ein Einfüge-Statement.
SQL-Code:
INSERT INTO Tabelle(Feldliste)
SELECT Feldliste...

Das passt aber nur schlecht in die Tabellenstruktur. Damit würde der Rang des Spielers nämlich bei jedem seiner Spielergebnisse eingetragen. Da sträubt sich bei mir aber so Einiges - Stichwort: Normalisierung

jobo 23. Okt 2011 17:56

AW: SQL Update
 
Apropos "Sträuben"
Was verkauft Ihr denn in der Skatrunde so alles?

Na, ist mir eigentlich doch egal.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:15 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz