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
Seite 1 von 2  1 2      
DelTurbo

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

Wenn Feld null oder 0 einen anderen Wert zurückgeben

  Alt 11. Nov 2014, 11:16
Datenbank: MySql • Version: 5.x • Zugriff über: UniDac
Hallo,
irgendwie bekomme ich es nicht hin, die IF-Abfrage richtig zu machen. Bei x.FIDPtr können 3 Werte kommen. Entweder null,0 oder halt eine Zahl welcher der Pointer ist.

Ist x.FIDPtr null bekomme ich nur leere Felder zurück. Deswegen habe ich nun in der Tabelle ein Leerfeld angelegt. Mit null klappt es auch. Aber nicht mit 0. Die abfrage sieht so aus:

Code:
SELECT X.ID,X.Vorname,X.Nachname,Y.Funktion FROM ADaten as x
INNER JOIN FDaten as y on (y.ID=IFNULL(x.FIDPtr,53))
WHERE X.ID=3964;
Ich müsste wenn x.FIDPtr 0 ist, eine 53 haben. Bekomme es aber einfach nicht hin.

Gruß und danke im voraus
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!

Geändert von DelTurbo (11. Nov 2014 um 12:10 Uhr) Grund: Topic war schlecht gewählt
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

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
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: If then else

  Alt 11. Nov 2014, 11:30
NULL und 0 ist nicht das gleiche!
Kennt MySql decode ?
dann mach es so
Code:
select decode(x.FIDPtr,null,' ',0,'53',x.FIDPtr)
und der Join sollte doch wohl über die ID gehen?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
DelTurbo

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

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.194 Beiträge
 
Delphi 2007 Architect
 
#5

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.679 Beiträge
 
Delphi 2007 Enterprise
 
#6

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
 
#7

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.194 Beiträge
 
Delphi 2007 Architect
 
#8

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
DelTurbo

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

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
Benutzerbild von baumina
baumina

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

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
Antwort Antwort
Seite 1 von 2  1 2      


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 00:06 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