AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Werte Berechnen problem mit Null Werten

Werte Berechnen problem mit Null Werten

Ein Thema von TUX_der_Pinguin · begonnen am 4. Mai 2007 · letzter Beitrag vom 4. Mai 2007
Antwort Antwort
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
608 Beiträge
 
Delphi 11 Alexandria
 
#1

Werte Berechnen problem mit Null Werten

  Alt 4. Mai 2007, 12:05
Datenbank: MySQL • Version: 5 • Zugriff über: dbExpress
Hallo,

ich habe folgende Spalten in einer Tabelle:
ID
EK_Preis_1
EK_Preis_2
VK_Factor
VK_Preis

Jetzt will ich die beiden Spalten 'EK_Preis_1' und 'EK_Preis_2' zusammenrechnen.
Die Berechnungen sollen vom MySQL Server erledigt werden.

SELECT ID, EK_Preis_1 + EK_Preis_2 AS EK_Summe FROM Tabelle; Ansich alles kein Problem jedoch steht in einem der Felder 'NULL' so lautet
EK_Summe auch NULL.

Beisp.:
EK_Preis_1 = 25.95
EK_Preis_2 = NULL
EK_Summe = NULL (soll aber 25.95 sein)

Hat jemand eine Idee wie ich das dem SQL Server beibringe?

Das zweite Problem ist, ich brauche eine Abfrage die mir entweder anzeigt was in 'VK_Preis' steht wenn das Feld nicht NULL
ist oder 'VK_Factor * EK_Summe' anzeigt.

SELECT ID, EK_Preis_1+EK_Preis_2 AS EK_Summe, [VK_Preis IS NOT NULL Or VK_Factor * (EK_Preis_1 + EK_Preis2)] FROM Tabelle; So in der Art müßte das quasi aussehen nur so recht klappen tut es noch nicht.

Bin für jeden Tipp dankbar.

mfg

TUX
  Mit Zitat antworten Zitat
daddy

Registriert seit: 9. Sep 2005
Ort: Köln
124 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Werte Berechnen problem mit Null Werten

  Alt 4. Mai 2007, 12:10
Wenn es sich um Deine "eigene" Datenbank handelt, also eine , auf die Du vollen Zugriff hast, könntest Du das Feld doch einfach als NOT NULL deklarieren und alle bisherigen NULL-Felder mit 0 füllen.

Ansonsten gäbe es für Dein zweites (und eigentlich auch für dein erstes) Problem in Firebird ein Case, das man in folgender Art verwendet:
Select Case When FeldA is NULL Then 0 Else FeldA End form ... Vielleicht gibt es etwas Ähnliches ja in MySQL.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Werte Berechnen problem mit Null Werten

  Alt 4. Mai 2007, 12:11
Schließe die NULL-Werte aus (in WHERE oder durch IF())
Markus Kinzler
  Mit Zitat antworten Zitat
clock50

Registriert seit: 9. Nov 2005
Ort: Derenburg
183 Beiträge
 
Delphi 5 Professional
 
#4

Re: Werte Berechnen problem mit Null Werten

  Alt 4. Mai 2007, 12:11
Hallo erst mal!

Beim ersten hinsehen würde ich sagen mit NULL kann man nicht rechnen aber mit '0' schon. Du solltest statt NULL - '0' in das feld eintagen.
Thomas
Man muß nicht alles wissen, man muß nur wissen in welchem Buch es geschrieben steht!
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
795 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Werte Berechnen problem mit Null Werten

  Alt 4. Mai 2007, 13:06
Such mal in der MySQL-Dokumentation nach der Funktion IFNULL.

Zitat:
IFNULL(expr1,expr2)
If expr1 is not NULL, IFNULL() returns expr1; otherwise it returns expr2. IFNULL() returns a numeric or string value, depending on the context in which it is used.
Grüße
Mikhal
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
608 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Werte Berechnen problem mit Null Werten

  Alt 4. Mai 2007, 13:23
Ich habe das ganze mit hilfe eurer Tipps ausprobiert und habe für beide Probleme eine Lösung gefunden.
Vorab sowohl mit einer Case struktur wie "daddy" es beschrieben hat war es möglich jedoch ist der
tipp von "mikhal" mit IFNULL() besser da die schreibweise extrem kürzer ist.

Hier die Lösungen:

1. Problem FeldA + FeldB trotz NULL Werte in einer der Spalten
SELECT IFNULL(EK_Preis_1,0)+IFNULL(EK_Preis_2,0) AS EK_Summe FROM Tabelle;
2.Problem Wenn FeldA NULL Dann FeldB * FeldC Sonst FeldA
SELECT IFNULL(VK,VK_Factor*(IFNULL(EK1,0)+IFNULL(EK2,0))) AS VK FROM Tabelle; Vielen dank noch mal für die Zahlreiche hilfe.

mfg

TUX
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:45 Uhr.
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