Oracl - podzapytanie i null

2011-05-15 11:48:01 Post #1 gość_ankaGliwicz

 
Witam, mam takie zapytanie:

1
2
3
4
5
6
7
 pobierz, plaintext 
select distinct z.zadid, z.system, z.nazwa , s.statid
from zad z 
left outer join stat s on z.zadid=s.zadid
where z.zadid='260'
and s.statid= (SELECT MAX(statid)from zad z left join stat s on s.zadid=z.zadid where s.zadid='260') ;
order by s.statid desc; 




Moje podzapytanie dla zadid=260 zwraca null
1
2
 pobierz, plaintext 
(SELECT MAX(statid)from zad z left join stat s on s.zadid=z.zadid where s.zadid='260') 


i tak ma być => jest ok

Jeżeli zadid=123 , to statid nie jest NULL , więc
zapytanie główne zwraca mi przykładowe dane dla tego zadid, w takiej formie:

Zadid / system / nazwa / statid => nazwa kolumn
--------------------------------
1 / xxx / yyy / 123 => wynik podzapytania


natomiast gdy wywołuje to zapytanie dla statid, które jest NULLem,
główne zapytanie nie zwraca mi nic ,

a powinno:


Zadid / system / nazwa / statid => nazwa kolumn
--------------------------------
1 / xxx / yyy / null => wynik podzapytania

Czy ktoś może poradzić, jak zmodyfikować zapytanie ? dziękuje z góry.

2011-05-15 13:36:51 Post #2 nospor

 
Dałaś to w warunku. A w warunku jak coś się nie zgadza to nie zwraca się nic.
Musisz to dać w LEFT JOIN
Wersja, dla mysql, w oracle chyba jest podobnie:
1
2
3
4
5
6
select distinct z.zadid, z.system, z.nazwa , s.statid 
from zad z  
left join stat s on (z.zadid=s.zadid and s.statid= (SELECT MAX(statid)from zad z left join stat s on s.zadid=z.zadid where s.zadid='260'))
where z.zadid='260'  
order by s.statid desc

Mniej więcej tak

2011-05-16 08:16:52 Post #3 gość_ankaGliwicz

 
bardzo serdecznie dziękuję za pomoc, jest ok

Odpowiedz