where(„NOT id“, $table->where(…)->…) vrátí prázdný výsledek, pokud výsledek poddotazu je nic

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Krab
Člen | 10
+
0
-

Když použiji $table->where(„NOT field“, $table->where…) tak pokud ten subdotaz vrátí prázdný výsledek, tak i ten hlavní dotaz vrátí prázdný výsledek, přestože by měl vracet jakoby všechno.

Když jsem to testoval, tak je to protože ten prazdný subdotaz se přeloží v nette na NULL a mysql pri NOT IN (NULL) vrací prostě nic, místo všeho.

Bylo by dobrý, kdyby ta metoda where věděla o tom, že se ji předává ten selection objekt a při prázdným výsledku vrátila třeba "", pak už mysql NOT IN ("") pobere

Editoval Krab (4. 12. 2013 17:29)

hrach
Člen | 1844
+
0
-

V nette 2.1 a masteru by to melo byt „ohackovane“, aby to fungovalo. Aktualni chovani neni chyba, je to jediny mozny zpusob, jak to prelozit a dotaz nespadne. IN ("") neni spravne reseni, muze tam neco „spadnout“, IN () je nevalidni.