Abfrage auf Austrittsdatum mit IFNULL

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Jo Reuter
Beiträge: 7
Registriert: Do, 04.02.2010 19:34

Abfrage auf Austrittsdatum mit IFNULL

Beitrag von Jo Reuter »

Ich (Base-Anfänger) habe (OO 3.1.0 -unter Suse 11.0) eine Datenbank erstellt, mit der ich Personal in verschiedenen Einrichtungen verwalten möchte.
Die Tabelle "Personal" enthält ein Feld "Austrittsdatum". Dieses ist bei unbefristet Beschäftigten "leer". Wenn ich nun abfragen will, welche Personen am 31.12.2009 noch beschäftigt sind, werden, wenn ich über das Austrittsdatum abfrage, natürlich nur die befristet Beschäftigten mit Austrittsdatum nach dem 31.12.2009 aufgelistet. Ich habe versucht die unbefristeten Fälle mit IFNULL abzufangen, aber da liefert die Abfrage kein Datumsformat mehr, sondern nur das Datum als lfd. Zahl. Außerdem kann ich kein Kriterium auf IFNULL setzen. Wenn ich hier ein Datum eingebe, oder die entsprechende fortlaufende Zahl, erhalte ich die Fehlermeldung, dass es sich hier um den falschen Datentaype handelt.

Hat jemand eine Idee zur Lösung?
AndreasJBittner
*****
Beiträge: 473
Registriert: Fr, 09.10.2009 16:44
Wohnort: Bielefeld
Kontaktdaten:

Re: Abfrage auf Austrittsdatum mit IFNULL

Beitrag von AndreasJBittner »

Hallo,

versuchs mal mit SELECT * FROM <TABELLE> WHERE Austrittsdatum IS NULL

Dieselbe Abfrage mit "IS NOT NULL" liefert Dir die Festangestellten. Das Feld Austrittsdatum muß dann wirklich leer sein (also NULL: Mantra - NULL is a state, not a value; NULL is a state, not a value; NULL is a state, not a value).

HTH & Grüße
Andreas
LO 4.3
AMD Athlon 64 3700+, 2.21 GHz, 4 GB RAM, Win XP SP3
iMac 2 GHz, 16 GB RAM/MacBookPro, 8 GB RAM, Mac OS X 10.9.5
Intel Core2 Quad CPU Q6600 @ 2,4 GHz, 4 GB RAM, Suse 13.2

MySQL 5.1: Pentium III, 666 MHz, 512 MB, Suse 12.1
Jo Reuter
Beiträge: 7
Registriert: Do, 04.02.2010 19:34

Re: Abfrage auf Austrittsdatum mit IFNULL

Beitrag von Jo Reuter »

Hallo Andreas,

vielen Dank für die schnelle Antwort. Deine vorgeschlagenen Lösungen funktionieren natürlich. Aber vielleicht habe ich mich zu undeutlich ausgedrückt. Ich suche eine einzige Abfrage, mit der ich alle befristet Beschäftigten mit Austrittsdatum > xx.xx.xxxx und alle unbefristet Beschäftigten aufliste. Daher habe ich versucht das leere Feld "Austritt" mit IFNULL in der Abfage mit einem Datum (31.12.2099) zu "füllen" und dann abzufragen.

Gruß

Jo
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Abfrage auf Austrittsdatum mit IFNULL

Beitrag von Barlee »

Hallo Jo,

warum nicht so:

Code: Alles auswählen

... where Datumsspalte > 'XXXX-XX-XX' OR Datumsspalte IS NULL
Oder wenn Du unbedingt ein "Pseudodatum" (z.B. 31.12.2099) bei Nullwerten vergeben möchtest, dann so:

Code: Alles auswählen

SELECT 
CAST(IFNULL("Datumsspalte",'2099-12-31') AS DATE) AS "Datum" 
FROM "Deine_Tabelle" 
WHERE CAST(IFNULL("Datumsspalte",'2099-12-31') AS DATE) > '2010-02-10'
In letzterem Fall "SQL Kommando direkt ausführen" aktivieren!

Gruß Barlee
Jo Reuter
Beiträge: 7
Registriert: Do, 04.02.2010 19:34

Re: Abfrage auf Austrittsdatum mit IFNULL

Beitrag von Jo Reuter »

Hallo Barlee,
das ist genau das, was ich gesucht habe. Du hast mein Problem(chen) gelöst. Vielen Dank!

Gruß

Jo
Antworten