Nette\Database skládání dotazu
- _Martin_
- Generous Backer | 679
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
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)