Prüfung mit IS NULL funktioniert bei mir nicht

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

heinz_ketchup
****
Beiträge: 111
Registriert: So, 07.10.2007 16:05
Wohnort: München

Prüfung mit IS NULL funktioniert bei mir nicht

Beitrag von heinz_ketchup »

Hallo,

irgendwie stelle ich mich wieder mal zu dumm an.

Ich habe 2 Tabellen, konten und istdaten. Nun möchte ich prüfen, ob auch für alle Konten die in meinen Buchungsätzen in istdaten verwendet werden, entsprechende Einträge in meiner Kontentabelle vorhanden sind. Die Kontentabelle steuert verschiedene Konteneigenschaften und die Konto-Nr ist der Primärschlüssel.

Wenn ein Konto nicht in der Tabelle konten vorhanden ist, aber in den Buchungssätzen auftaucht, dann möchte ich den Hinweis 'Fehler' bekommen, ansonsten den Hinweis 'ok'.

Meine Abfrage sieht so aus:

Code: Alles auswählen

SELECT
	istdaten.id_ktonr, 
	konten.kto_bezeichnung,
	IF(konten.kto_nr IS NULL, 'Fehler', 'ok')
FROM istdaten, konten where istdaten.id_ktonr=konten.kto_nr
Das funktioniert leider nicht. Ich bekomme nur die Konten angezeigt die auch in der Tabelle konten und istdaten vorhanden sind. Die Konten, die nur in der Tabelle istdaten vorhanden sind, werden nicht ausgegeben und als Fehler markiert.

Ich habe auch schon ausprobiert, ob es was bringt, die Relation "istdaten.id_ktonr=konten.kto_nr" umzudrehen, also "konten.kto_nr=istdaten.id_ktonr". Oder auch die IF-Abfrage zu variieren "IF(stdaten.id_ktonr IS NULL, 'Fehler', 'ok')". Ändert beides nix. :|

Was habe ich in meinem Select falsch gemacht?

fragt Werner

und bedankt sich schon für eure Hilfe!
------------------------------------------------------------
LibreOffice 3.5.4.2 auf Mac OS X 10.10.1 und MySQL 5.5
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: Prüfung mit IS NULL funktioniert bei mir nicht

Beitrag von Toxitom »

Hey Werner,

wo hast du den die "if" Abfrage her? HSQLDB kennt soetwas nicht. Da gibt es als vordefinierte Funktionen CASEWENN(), IFNULL() oer z.B.COALRSCE(), die wohl alle für deinen Wunsch genutzt werden können - nur ein "If()" kenn ich nicht ;-)

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
heinz_ketchup
****
Beiträge: 111
Registriert: So, 07.10.2007 16:05
Wohnort: München

Re: Prüfung mit IS NULL funktioniert bei mir nicht

Beitrag von heinz_ketchup »

Hallo Thomas,

jetzt hast Du mich gleich als vollkommenen Ignoranten geoutet. :shock:

Ich habe natürlich nicht an die - anscheinend doch nicht - so feinen Unterschiede zwischen HSQLDB und MySQL gedacht. :roll: SORRY vielmal !!!

Meine Prüfung, ob das Konto vorhanden ist oder nicht, soll in MySQL laufen. Mit IFNULL habe ich auch schon experimentiert. Da ist bei mir aber auch nichts gescheites rausgekommen.

Danke für Deinen Hinweis!

Viele Grüße
Werner
------------------------------------------------------------
LibreOffice 3.5.4.2 auf Mac OS X 10.10.1 und MySQL 5.5
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Prüfung mit IS NULL funktioniert bei mir nicht

Beitrag von komma4 »

heinz_ketchup hat geschrieben:Meine Prüfung, ob das Konto vorhanden ist oder nicht, soll in MySQL laufen.
... da ist auch die Frage, ob die verwendete Anbindung an Base (MySQL, JDBC, ODBC?) die IF-Abfrage unterstützt.

Konntest Du das an einem einfachen Beispiel schon verifizieren, Werner?

OOo Version?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
heinz_ketchup
****
Beiträge: 111
Registriert: So, 07.10.2007 16:05
Wohnort: München

Re: Prüfung mit IS NULL funktioniert bei mir nicht

Beitrag von heinz_ketchup »

Hallo komma4,

ok, hast recht, verstehe, wenn Base keine IF()-Funktion kennt, dann geht's natürlich nicht.

Ich erstelle meinen Query allerdings in Navicat, das ich als GUI-Tool für die Verwaltung meiner MySQL verwende. Damit müsste es eigentlich funktionieren.

Base benutze ich nur, um mit JDBC die Anbindung für Calc zu bekommen. In Calc frage ich dann meine MySQL-Daten ab. Hier muss die IF()-Funktion nicht laufen.

Wenn die IF()-Funktion Schwierigkeiten bereiten kann, dann nehme ich auch gerne einen anderen Vorschlag an. Vielleicht gibt es ja einen viel eleganteren Weg. Ich hatte zuerst ja auch mit IFNULL() experimentiert. Es geht mir mehr um die Lösung meines Problems, als um den Weg mit welcher Funktion. Da bin ich recht schmerzfrei.

Danke und schöne Grüße
Werner
------------------------------------------------------------
LibreOffice 3.5.4.2 auf Mac OS X 10.10.1 und MySQL 5.5
Antworten