AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Wenn Feld null oder 0 einen anderen Wert zurückgeben
Thema durchsuchen
Ansicht
Themen-Optionen

Wenn Feld null oder 0 einen anderen Wert zurückgeben

Ein Thema von DelTurbo · begonnen am 11. Nov 2014 · letzter Beitrag vom 11. Nov 2014
Antwort Antwort
mkinzler
(Moderator)

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

AW: If then else

  Alt 11. Nov 2014, 11:26
Beim Inner Join gibt es die Datensätze mit NULL nicht mehr
Markus Kinzler
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.245 Beiträge
 
Delphi 2007 Architect
 
#2

AW: If then else

  Alt 11. Nov 2014, 11:33
Das habe ich schon gemerkt. Aber wie bekomme ich die 53 zurück?

Mit dieser Abfrage klappt es auch nicht. Ich habe das schon sehr viel versucht. Aber komme an dieser stelle nicht weiter.

Code:
INNER JOIN FDaten as y on (y.ID=IFNULL(x.FIDPtr,53)) OR IF(x.FIDPtr=0,53,xFIDPtr)
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.245 Beiträge
 
Delphi 2007 Architect
 
#3

AW: If then else

  Alt 11. Nov 2014, 11:43
Erstmal sorry, habe wohl getippt und deine Antwort nicht direkt gesehen.

Decode ist bei MySql wohl was anderes. Die abfrage klappt leider nicht.

Code:
SELECT X.ID,X.Vorname,X.Nachname,Y.Funktion FROM ADaten as x
 INNER JOIN FDaten as y on (y.ID=select decode(x.FIDPtr,null,' ',0,'53',x.FIDPtr))
 WHERE X.ID=3964;
Weder mit SELECT noch ohne.

Fehler: [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'null,' ',0,'53',FDaten.FIDPtr))
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#4

AW: If then else

  Alt 11. Nov 2014, 12:07
Ich sehe hier nirgends eine if-then-else Abfrage, nur SQL Statements. Wie genau sehen deine Ausgangsdaten aus, und was willst du am Ende wirklich haben?

Zwei "Glaskugel"-Ideen-Ansätze: Wenn du auch null-Felder im Join brauchst, nimm FULL OUTER JOIN. Wenn das Problem nicht im SQL sondern eher in Delphi liegt (was der Threadtitel irgendwie suggeriert): Praktisch alle DB-Komponenten nutzen Delphis TField, welches wiederum eine Property "IsNull" bietet. Damit lassen sich auch in Delphi 0 und NULL unterscheiden.

Um aber wirklich konkret zu werden, ist mir das hier alles zu konfus. Sortier dich erstmal selbst
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Wenn Feld null oder 0 einen anderen Wert zurückgeben

  Alt 11. Nov 2014, 12:14
Ich hätte noch ne Orakel-Lösung

SQL-Code:
SELECT X.ID,X.Vorname,X.Nachname,Y.Funktion FROM ADaten as x
 INNER JOIN FDaten as y on (y.ID=x.FIDPtr)
 WHERE X.ID=3964;
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.245 Beiträge
 
Delphi 2007 Architect
 
#6

AW: Wenn Feld null oder 0 einen anderen Wert zurückgeben

  Alt 11. Nov 2014, 12:21
Ich hätte noch ne Orakel-Lösung

SQL-Code:
SELECT X.ID,X.Vorname,X.Nachname,Y.Funktion FROM ADaten as x
 INNER JOIN FDaten as y on (y.ID=x.FIDPtr)
 WHERE X.ID=3964;
Uff, das klappt. Vielen vielen Dank!!!
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.245 Beiträge
 
Delphi 2007 Architect
 
#7

AW: Wenn Feld null oder 0 einen anderen Wert zurückgeben

  Alt 11. Nov 2014, 12:15
Topic ist geändert. Besser kann ich das nicht beschreiben.

Also, ich habe 2 Tabellen. Einmal mit Namen und einen Pointer auf die ID der zweiten Tabelle. Wenn der Pointer richtig gesetzt ist, klappt alles. Wenn nix drin steht, also der Pointer null ist, dann gebe ich mir eine 53 zurück. Leider kann diese "Pointerfeld" auch den 0 haben. Dann brauch ich auch die 53. Und das bekomme ich nicht hin. Das null nicht gleich 0 ist weiß ich. Sonst würde es ja klappen.

Ich hoffe das war verständlich. Wenn nicht, einfach nochmal fragen.

Gruß
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Wenn Feld null oder 0 einen anderen Wert zurückgeben

  Alt 11. Nov 2014, 12:28
Vielleicht so, wobei mir deine Datenstruktur sehr seltsam vorkommt:

SQL-Code:
SELECT X.ID,X.Vorname,X.Nachname,Y.Funktion FROM ADaten as x
  LEFT JOIN FDaten as y on (y.ID=If(coalesce(x.FIDPtr,53)=0,53,coalesce(x.FIDPtr,53)))
  WHERE X.ID=3964;
EDIT: Aber wenn das andere geklappt hat, dann war deine "was brauche ich" Beschreibung sehr seltsam *lach
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#9

AW: Wenn Feld null oder 0 einen anderen Wert zurückgeben

  Alt 11. Nov 2014, 12:36
Ich hätte so etwas versucht (ungetestet):
SQL-Code:
SELECT
  X.ID,X.Vorname,X.Nachname,Y.Funktion FROM ADaten AS x
JOIN
  FDaten AS y ON y.ID = (IF(x.FIDPtr = 0, 53, IFNULL(x.FIDPtr, 53)))
WHERE
  X.ID=3964;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort


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 13:53 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