Otazka na SQL - NOT IN
Jan Serak
sherry na pikebo.cz
Úterý Únor 6 20:32:54 CET 2001
Milan Sorm wrote:
>
> Kdyz provedu
>
> SELECT uzivatel FROM s_studium_obecne WHERE datum_vyrazeni IS NULL
>
> dostanu korektne nekolik tisic ID uzivatelu, kteri korektne studuji
>
> kdyz ale udelam
>
> SELECT id FROM k_uzivatele WHERE id NOT IN (
> SELECT uzivatel FROM s_studium_obecne WHERE datum_vyrazeni IS NULL
> )
>
> Cekal bych, ze dostanu vsechny uzivatele, kteri nejsou v tom prvnim vybrani.
> Nedostanu vsak nikoho, pricemz prokazatelne existuji:
>
> 1. ti co maji datum_vyrazeni nastaveno
> 2. ti co nejsou ani v s_studium_obecne uvedeni
>
> Jak je to mozne ?
>
> NOT IN tam potrebuju (nemuzu to udelat normalne pomoci JOIN), protoze ty
> podminky jsou mnohem slozitejsi a tahle je tam jen jedna z mnoha
>
> Uzivam Oracle 8.1.5 na Linuxu.
Toz to je teda zahada. Rozhodne bych to nehledal v tom NOT IN. Prave
jsem
(pro jistotu experimentem ;-) presne na Oracle 8.1.5 na Linuxu overil,
ze NOT IN funguje. Neni tam nejaka trapna datova konverze nebo tak neco?
A co takhle:
SELECT id ...
MINUS
SELECT uzivatel ...
Pravdou je, ze nejake bugy ohledne IS NULL a NOT ( ... IS NULL) a NOT IN
urcite byly, ale rekl bych, ze s Oracle7 byly ze sveta zprovodeny.
Sherry
Další informace o konferenci Test