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