Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zapytanie if/where/case ?!, Inteligentne zapytanie
qqrq83
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 14.03.2012

Ostrzeżenie: (0%)
-----


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

Ten post edytował qqrq83 14.03.2012, 16:36:48
Go to the top of the page
+Quote Post
bww
post
Post #2





Grupa: Zarejestrowani
Postów: 42
Pomógł: 3
Dołączył: 14.02.2012

Ostrzeżenie: (0%)
-----


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

?
Go to the top of the page
+Quote Post
qqrq83
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 14.03.2012

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 19:25