![]() |
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:
Nun zm Problem. An sich funktioniert das.
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; 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 |
Re: Bitte Hilfe für SQL-Abfrage
In B stehen die Spieler und in A die Punkte? Und Du willst alle Spieler sehen?
|
Re: Bitte Hilfe für SQL-Abfrage
exacto del mundo
|
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 |
Re: Bitte Hilfe für SQL-Abfrage
Case in einem SQL-String?
|
Re: Bitte Hilfe für SQL-Abfrage
Wenn das DBMS dies unterstützt, sonst halt IIF(), IF() o.ä
|
Re: Bitte Hilfe für SQL-Abfrage
[quote="DeddyH"]
SQL-Code:
Es funktioniert zwar, aber der Effekt bleibt gleich....
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 |
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 |
Re: Bitte Hilfe für SQL-Abfrage
NULL ist was anderes als 0
|
Re: Bitte Hilfe für SQL-Abfrage
Stimmt, hatte ich ganz übersehen :oops:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:44 Uhr. |
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