Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Bitte Hilfe für SQL-Abfrage (https://www.delphipraxis.net/117756-bitte-hilfe-fuer-sql-abfrage.html)

Privateer3000 24. Jul 2008 09:22

Datenbank: MDB • Zugriff über: ADO

Bitte Hilfe für SQL-Abfrage
 
Hallöchen,
ich häng fest mit einer eigentlich simplen Sache:
Tabelle A: Punkte (journal)
Tabelle B: Spieler (spnamen)

nun sollen alle Spieler aus A mit Spieler aus B
verglichen und Punkte summiert werden.
Wenn Punkte vorhanden sind Punkte anzeigen, wenn nicht
null anzeigen. D.h. es sollen also alle angezeigt werden
ob nun Punkte da sind oder nicht.
Delphi-Quellcode:
with refti do begin
  Close; SQL.Clear;
  SQL.Text:='SELECT A.id,sum(A.versuche*A.punkte) as pualles FROM journal'+
            ' AS A INNER JOIN spnamen AS B ON A.id=B.id'+
            ' WHERE A.validiert=False'+
            ' GROUP BY A.id';
  Open;First;
  end;
  while not refti.Eof do begin
    with haupt.plane.sppanel1.FindComponent('splab'+refti.fieldbyname('id').AsString)as TLabel do begin
     Caption:=format('%f',[refti.FieldByName('pualles').AsFloat])
  refti.Next;
  end;
Nun zm Problem. An sich funktioniert das.
Doch wenn A.validiert auf True gesetzt wurde und o.g.
Abfrage erneut gestartet wird, werden die Punkte immer noch angezeigt.
D.h. wahrscheinlich nicht abgefragt und die Ergebnisse bleiben stehen.

Ich hoffe jemand blickt hier durch... :-(

LG
Privateer

DeddyH 24. Jul 2008 09:37

Re: Bitte Hilfe für SQL-Abfrage
 
In B stehen die Spieler und in A die Punkte? Und Du willst alle Spieler sehen?

Privateer3000 24. Jul 2008 10:04

Re: Bitte Hilfe für SQL-Abfrage
 
exacto del mundo

DeddyH 24. Jul 2008 10:09

Re: Bitte Hilfe für SQL-Abfrage
 
Möglicherweise ist das mal wieder kompletter Blödsinn (:mrgreen:), aber versuch es mal so:
SQL-Code:
SELECT B.ID, (CASE A.ID WHEN NULL THEN 0 ELSE SUM(A.versuche*A.punkte) END) AS pualles
FROM spnamen B
LEFT JOIN journal A ON A.ID = B.ID
WHERE A.validiert = False
GROUP BY B.ID

Privateer3000 24. Jul 2008 10:37

Re: Bitte Hilfe für SQL-Abfrage
 
Case in einem SQL-String?

mkinzler 24. Jul 2008 10:39

Re: Bitte Hilfe für SQL-Abfrage
 
Wenn das DBMS dies unterstützt, sonst halt IIF(), IF() o.ä

Privateer3000 24. Jul 2008 11:07

Re: Bitte Hilfe für SQL-Abfrage
 
[quote="DeddyH"]
SQL-Code:
SELECT B.ID, sum(IIF(A.ID >0,A.versuche*A.punkte,0)) AS pualles
FROM spnamen B
LEFT JOIN journal A ON A.ID = B.ID
WHERE A.validiert = False
GROUP BY B.ID
Es funktioniert zwar, aber der Effekt bleibt gleich....

DeddyH 24. Jul 2008 11:09

Re: Bitte Hilfe für SQL-Abfrage
 
Mal anders formuliert:
SQL-Code:
SELECT B.ID, sum(IIF(A.ID >0,A.versuche*A.punkte,0)) AS pualles
FROM spnamen B
LEFT JOIN journal A ON A.ID = B.ID
AND A.validiert = False
GROUP BY B.ID

mkinzler 24. Jul 2008 11:11

Re: Bitte Hilfe für SQL-Abfrage
 
NULL ist was anderes als 0

DeddyH 24. Jul 2008 11:13

Re: Bitte Hilfe für SQL-Abfrage
 
Stimmt, hatte ich ganz übersehen :oops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:44 Uhr.
Seite 1 von 3  1 23      

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