Strona 1 z 1

IFNULL - wstawia w pole daty wart. 2.01.1

: śr cze 19, 2013 3:15 pm
autor: toivio
Witam,
po stworzeniu zapytania:
SELECT
,"m"."imie" AS "Mąż:"
,"z"."imie" AS "Żona:"
,IFNULL("m"."data_slubu","z"."data_slubu") AS "data ślubu"
,IFNULL("m"."miejsce_slubu","z"."miejsce_slubu") AS "miejsce ślubu"
,IFNULL("m"."dzieci","z"."dzieci") AS "Dzeci:"

FROM { OJ "rodzina" "r"
LEFT JOIN "osoba" "m" ON "r"."id"="m"."id_rodziny" AND "m"."typ_w_rodzinie"='1'
LEFT JOIN "osoba" "z" ON "r"."id"="z"."id_rodziny" AND "z"."typ_w_rodzinie"='2'
}
;

w polu "data ślubu", gdy daty tej niema ani mąż ani żona wstawiana jest jakaś dziwna wartość: 2.01.1, pole to w tabeli ma wartość DATE

w polach "miejsce ślubu" i "dzieci" gdy nie podanych to prawidłowo pozostawia puste,
dlaczego wstawiana jest taka wartość i jak można to ominąć?

edit:
zastępując IFNULL funkcją:
COALESCE("m"."data_slubu","z"."data_slubu",xxx)
w miejsce xxx można wstawić tylko datę w formacie np. {D '2111-11-01' }, pozostawiajć puste,lub podając jakiś wyraz wywala błędem.
dzieje się tak tylko na polu typu DATE, na VARCHAR pozostawia puste,

Re: IFNULL - wstawia w pole daty wart. 2.01.1

: pt lip 19, 2013 3:29 pm
autor: toivio
ponawiam swoje pytanie ponieważ problem jest w dalszym wykorzystaniu IFNULL w Raporcie.

Jak wspominałem, jeżeli nie ma żadnej daty automatycznie wstawia się 2.0.1.1, i wtedy niemożna wygenerować Raportu. Działa to na polu DATE, na polu tekstowym IFNULL działa dobrze, gdy jest brak danych pozostawia puste pole i raport generuje się bez problemu.

Re: IFNULL - wstawia w pole daty wart. 2.01.1

: pn sie 12, 2013 3:46 pm
autor: Jan_J
Widocznie efekt założenia że NULL będzie reprezentowany przez 0, a 0 jak data to ....
Nie całkiem poprawne, no ale cóż...
A gdyby w polu użyć składni case ... when ... z badanem czy data jest null i w razie czego zareagować?