Сложный запрос в where для pdoResources
Приведённый код (ниже) прекрасно работает, НО
Проблема, (как я понимаю) в том, что для where нужно сформировать json-строку (если where простой — можно обойтись чистым sql-кодом в квадратных скобках)
Подскажите, пожалуйста, пример такой json-строки с условиями A and B or C and D?
Где-то откопал код (ниже), но я не понимаю, к сожалению, что делать, если условий много:
для условия width=15 and height=10 or width=25 json-код такой
А если будет ещё пару условий?
Уперся, реально не знаю — что делать
[[pdoResources?
&parents=`2`
&depth=`0`
&tpl=`TestListRowTpl`
&includeTVs=`tvimage,nacpr,konpr`
&where=`["konpr >= now() AND nacpr<=now()"]`
]]
При попытке дописать ещё пару условий выводится совершенно не то, что надо (весь список, вместо выбранных)[[pdoResources?
&parents=`2`
&depth=`0`
&tpl=`TestListRowTpl`
&includeTVs=`tvimage,nacpr,konpr`
&where=`["konpr >= now() AND nacpr<=now()
OR konpr>=DATE_ADD(NOW(),INTERVAL 7 DAY)
AND nacpr<=DATE_ADD(NOW(),INTERVAL 7 DAY)"]`
]]
По отдельности, как не странно, всё работает…Проблема, (как я понимаю) в том, что для where нужно сформировать json-строку (если where простой — можно обойтись чистым sql-кодом в квадратных скобках)
Подскажите, пожалуйста, пример такой json-строки с условиями A and B or C and D?
Где-то откопал код (ниже), но я не понимаю, к сожалению, что делать, если условий много:
для условия width=15 and height=10 or width=25 json-код такой
{"0":{"width :=":"15","AND:height:=":"10"},"OR:width :=":"25"}
А если будет ещё пару условий?
Уперся, реально не знаю — что делать
Комментарии: 6
A and B or C and D
— странное условие… Может быть, (A and B) or (C and D)
?Или pdoResources умеет расставлять приоритет между операндами?
Меня вообще-то интересует (A and B) or (C and D) or (E and F and G) :)
ПОЧТИ все примеры в интернете — либо одно условие, либо два.
ПОЧТИ все примеры в интернете — либо одно условие, либо два.
Вооот, а у Вас скобок не хватает в условии. Попробуйте так:
&where=`["( konpr >= now() AND nacpr<=now() ) OR ( konpr>=DATE_ADD(NOW(),INTERVAL 7 DAY) AND nacpr<=DATE_ADD(NOW(),INTERVAL 7 DAY) )"]`
Пробелы поставил для удобства. Не уверен, что сниппет поймет такое разделение операндов. Но, думаю, смысл Вы поняли, и попробовать можно :)
я уже так пробовал — выводятся все записи, а не нужные по условиям…
Хмм… Тогда тоже жду решение.
Включаете параметр showLog, получаете сформированный sql запрос и анализируете. Думаю, удивитесь, когда увидите, что получилось. Поиграться с ним можно в phpMyAdmin или можно поставить dbAdmin.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.