Cześć, chodzi mi o coś takiego, że:
Mam dwie tabele, które wyglądają jakoś tak:
TAB1
ID - klucz główny
inne pola
TAB2
ID - klucz główny
empID bigint
tab1ID bigint - odnosi się do TAB1 logicznie
I teraz tak.
Pobieram sobie rekordy z TAB1, ale z pewnymi warunkami.
Jeśli w TAB2 są rekordy dla empID = 10, to wtedy pobieram tylko z tej puli. W innym wypadku pobieram wszystkie z TAB1.
Przykład:
Przypadek 1
Tabela TAB1 zawiera 3 rekordy:
ID = 1, ID = 2, ID = 3
Tabela TAB2 nie zawiera żadnych rekordów.
Zapytanie zwraca mi wszystkie 3 rekordy z tabeli TAB1.
Przypadek 2:
Tabela TAB1 zawiera 3 rekordy:
ID = 1, ID = 2, ID = 3
Tabela TAB2 zawiera 2 rekordy:
tab1ID = 1, tab1ID = 3
Zapytanie zwraca mi da rekordy z tabeli TAB1:
ID = 1 i ID = 3
Próbowałem coś w ten deseń:
select * from tab1
where ID in(case when (select count(ID) from tab2 where empID = 10)>0 then
(select tab1ID from tab2 where empID = 10)
else
(select ID from tab1) end)
Ale to nie działa.
Oczywiście chciałbym, żeby to zapytanie było jak najbardziej optymalne. Jak coś takiego zrobić?
AHA, to musi być jako warunek w WHERE