Nette\Database skládání dotazu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
_Martin_
Generous Backer | 679
+
0
-

Ahoj, zajímalo by mě, jak řešit v Nette\Database následující situaci: Mám část SQL dotazu (neco = ? AND neco_jineho = 1) a pole, které obsahuje několik neco hodnot. Konečný dotaz má být složen z tolika částí, kolik hodnot je v poli. Tyto části budou spojeny operátorem OR. Výsledek pro pole array(2, 6, 33) bude vypadat nějak takto:

(neco = 1 AND neco_jineho = 1) OR (neco = 5 AND neco_jineho = 1) OR (neco = 33 AND neco_jineho = 1)

Jak něčeho takového docílit? Otazníčky používám proto, aby bylo jasné, že jde o parametry (tj. aby je PDO zpracovalo).

bojovyletoun
Člen | 667
+
0
-

nešlo by to booleho algebrou? neco=n;neco_jineho=j
n=1 & j=1 | n=2 & j=1 | n=3 & j=1 | n=4 & j=1
==
j=1 & (n=1 | n=2 | n=3 | n=4)

pomůcka: &=and= násobení, |=or=sčítání:
a x j + b x j + c x j = j x (a + b + c)

tzn neco_jineho=1 AND neco in(2,3,4,5) přepsat toto sql do php nebude už problém

Editoval bojovyletoun (28. 11. 2011 12:47)

_Martin_
Generous Backer | 679
+
0
-

Jak jsem si toho mohl nevšimnout? Díky =)