Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapytanie if/where/case ?!
Forum PHP.pl > Forum > Bazy danych > Oracle
qqrq83
Witam,

Mam 2 tabele
1.[Z]amówień którego jedna z kolumn mówi o [P]lanowanej [D]acie [R]ealizacji.
2.[R]ealizacji w której też jedna z kolumn zawiera informację o Planowanej Dacie Realizacji.

[Z] i [R] jest powiązane id_realizacji
Dla każdego [R] istnieje id_realizacji w [Z] - na odwrót już nie.

Zasada jest taka, że w tabeli [Z] kolumna [PDR] zawsze zawiera datę, a w tabeli [R] kolumna [PDR] nie zawsze (zależy czy użytkownik uzupełnił pole)

Zbudowałem zapytanie które zwraca wspólną tabelę [Z] i [R] gdzie [Z].id_realizacji = [R].id_realizacji natomiast...
mam problem z zapytaniem które zwracałoby wiersze z zakresu dat (parametr) od/do biorąc pod uwagę najpierw daty [PDR] z tabeli [R] a w przypadku gdy pole jest NULL to z [Z]

Proszę o pomoc.

Pozdrawiam,
Q
bww
To może zrobić warunek
  1. WHERE (z.pdr BETWEEN data_od AND data_do OR r.pdr BETWEEN data_od AND data_do)
, a w selecie zrobić
  1. case when r.pdr IS NULL then z.pdr else r.pdr end AS pdr

?
qqrq83
Takoż zrobiłem i chyba działa tj.

w selecie:

  1. WHEN R.PDR IS NULL THEN Z.PDR ELSE R.PDR END "PDR",


a where trochę inny:

  1. AND ((R.PDR BETWEEN to_date( '&OD_DATY' ,'YYYY-MM-DD' ) AND to_date( '&DO_DATY' , 'YYYY-MM-DD' )) OR ( Z.PDR BETWEEN to_date( '&OD_DATY' ,'YYYY-MM-DD' ) AND to_date( '&DO_DATY' , 'YYYY-MM-DD' )AND R.PDR IS NULL ))


warunek ma najpierw sprawdzac R.PDR a jezeli jest null to brac Z.PDR - i chyba to robi.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.