Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Prism SQL Berechnung und NULL (https://www.delphipraxis.net/97532-sql-berechnung-und-null.html)

mkinzler 12. Aug 2007 16:55

Re: SQL Berechnung und NULL
 
Welche Funktion?
Versuch mal
SQL-Code:
...sum(iif( <Feld> is not null, <feld>, 0))...

Werwurm 12. Aug 2007 17:11

Re: SQL Berechnung und NULL
 
Zitat:

Zitat von mkinzler
Welche Funktion?
Versuch mal
SQL-Code:
...sum(iif( <Feld> is not null, &lt;feld&gt;, 0))...

@mkinzler
Ich meine die Funktion SUM. Ich bin der Meinung ich zwei Felder verschiedener Tables nicht über die SUM-Funktion addieren kann.
Mit Deinem Vorschlag sieht meine SQL-Abfrage so aus:
SQL-Code:
SELECT s.name||', '||s.vorname, (iif(e.punkte IS NOT NULL, e.punkte, 0)) + (iif(d.punkte IS NOT NULL, d.punkte, 0)) as punkte
FROM "T_SPIELER" s
LEFT OUTER JOIN "T_EINZEL_ERGEBNIS" e ON e.spieler_id=s.id
LEFT OUTER JOIN "T_DOPPEL_ERGEBNIS" d ON d.spieler_id=s.id and d.liga=e.liga
WHERE (e.spieler_id is NOT NULL) AND (d.spieler_id is NOT NULL);
Dadurch erhalte die Fehlermeldung "Token unknown: is"

mkinzler 12. Aug 2007 17:35

Re: SQL Berechnung und NULL
 
Wenn du Null-Werte im where ausschließt, brauchst du diese nicht mehr mit IIf o.ä. auschließen.
Sum summiert alle werte einer oder mehrerer Spalten.

Werwurm 12. Aug 2007 17:46

Re: SQL Berechnung und NULL
 
Zitat:

Zitat von mkinzler
Wenn du Null-Werte im where ausschließt, brauchst du diese nicht mehr mit IIf o.ä. auschließen.
Sum summiert alle werte einer oder mehrerer Spalten.

Ich glaube ich wurde immer noch nicht verstanden, oder ich bin komplett auf dem Holzweg.
In den beiden Tables habe ich lediglich nur einen Eintrag pro Spieler. Die erspielten Punkten werden schon beim Eintragen durch eine SP addiert.
Ich musste nur aus Abfragegründen die Einzelspiele von den Doppel trennen. Deshalb habe ich zwei Tables mit schon summierten Werten.
Nun möchte ich lediglich die beiden summierten Werte addíeren.

Ich werde die Sache jetzt versuchen mittels Trigger lösen, da ich für mein Problem keine andere Lösung mehr sehe.

mkinzler 12. Aug 2007 17:48

Re: SQL Berechnung und NULL
 
versuch mal
SQL-Code:
...not is null ...

peter12 12. Aug 2007 18:07

Re: SQL Berechnung und NULL
 
Wäre es nicht möglich einen Trigger zu Programmieren der keine Null auf diesen Feld zuläst sonder 0.
Somit wäre das Problem beim addieren verschwunden.

Peter

Werwurm 12. Aug 2007 18:29

Re: SQL Berechnung und NULL
 
Hallo,

habe die Sache mit einem Trigger gelöst.
Sobald ich einen Spieler erzeuge bekommt dieser alle Werte auf 0 gesetzt.
So klappt auch die Addition.

Vielen Dank für Eure Hilfe.

marabu 12. Aug 2007 18:32

Re: SQL Berechnung und NULL
 
Hallo Marcus,

bei mir funktioniert das:

SQL-Code:
/* 
  spieler (id, nachname, vorname)
  einzel (spieler_id, punkte)
  doppel (spieler_id, punkte)
*/

SELECT id, nachname, vorname, (COALESCE(e.punkte, 0) + COALESCE(d.punkte, 0)) AS punkte
FROM spieler s
LEFT JOIN einzel e ON s.id = e.spieler_id
LEFT JOIN doppel d ON s.id = d.spieler_id
Grüße vom marabu

Jelly 12. Aug 2007 18:36

Re: SQL Berechnung und NULL
 
[quote="Werwurm"]Sobald ich einen Spieler erzeuge bekommt dieser alle Werte auf 0 gesetzt.[/default]
Dafür gibts auch Default Werte.
Zitat:

Zitat von Werwurm
So klappt auch die Addition.

Hast du denn schon die Coalesce Funktion ausprobiert, die ich oben genannt habe.

Hansa 12. Aug 2007 18:45

Re: SQL Berechnung und NULL
 
Da hilft eigentlich nur noch der Firebird Null-Guide. Dringend lesen. :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:06 Uhr.
Seite 2 von 3     12 3      

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