Выборка документов Сейчас, До, После
Добрый день! Подскажите как сделать выборку через where с AND. Есть документ в нём 2 тв с датами, на выходе ТВ даты в %s (в секундах)
У меня три вкладки по статусам: Идёт, Прошло, Предстоит.
Для «Идёт» использую
У меня три вкладки по статусам: Идёт, Прошло, Предстоит.
Для «Идёт» использую
&where=`{"endDateEvent:>":"[[!date]]","AND:startDateEvent:<":"[[!date]]"}`
Прошло&where=`{"endDateEvent:<":"[[!date]]","AND:startDateEvent:<":"[[!date]]"}`
Предстоит&where=`{"endDateEvent:>":"[[!date]]","AND:startDateEvent:>":"[[!date]]"}`
Но во всех трёх выборках получается так что все ресурсы выводятся одинаково не исполняю условия. Подскажите где допущенной мной ошибка или подскажите правильный вариант. Заранее благодарен. Комментарии: 13
Для начала включите &showLog и посмотрите какой получается SQL запрос.
Это по выборке «Идёт» — рез-ов вообще нет, хотя 1 ресурс с true есть.
0.0003550: pdoTools loaded
0.0000861: xPDO query object created
0.0009770: Included list of tvs: endDateEvent, startDateEvent
0.0008130: leftJoined modTemplateVarResource as TVenddateevent
0.0007360: leftJoined modTemplateVarResource as TVstartdateevent
0.0010591: Added selection of modResource: SQL_CALC_FOUND_ROWS `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `richtext`, `template`, `menuindex`, `searchable`, `cacheable`, `createdby`, `createdon`, `editedby`, `editedon`, `deleted`, `deletedon`, `deletedby`, `publishedon`, `publishedby`, `menutitle`, `donthit`, `privateweb`, `privatemgr`, `content_dispo`, `hidemenu`, `class_key`, `context_key`, `content_type`, `uri`, `uri_override`, `hide_children_in_tree`, `show_in_tree`, `properties`
0.0000300: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `endDateEvent`
0.0000229: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `startDateEvent`
0.0001969: Replaced TV conditions
0.0011549: Processed additional conditions
0.0024099: Added where condition: `TVenddateevent`.`value`:>=1197719700, AND:`TVstartdateevent`.`value`:<=1197719700, modResource.parent:IN(26,56,57,58), modResource.published=1, modResource.deleted=0
0.0000660: Replaced TV conditions
0.0003560: Sorted by modResource.publishedon, DESC
0.0000110: Limited to 10, offset 0
0.0007200: SQL prepared "SELECT SQL_CALC_FOUND_ROWS `modResource`.`id`, `modResource`.`type`, `modResource`.`contentType`, `modResource`.`pagetitle`, `modResource`.`longtitle`, `modResource`.`description`, `modResource`.`alias`, `modResource`.`link_attributes`, `modResource`.`published`, `modResource`.`pub_date`, `modResource`.`unpub_date`, `modResource`.`parent`, `modResource`.`isfolder`, `modResource`.`introtext`, `modResource`.`richtext`, `modResource`.`template`, `modResource`.`menuindex`, `modResource`.`searchable`, `modResource`.`cacheable`, `modResource`.`createdby`, `modResource`.`createdon`, `modResource`.`editedby`, `modResource`.`editedon`, `modResource`.`deleted`, `modResource`.`deletedon`, `modResource`.`deletedby`, `modResource`.`publishedon`, `modResource`.`publishedby`, `modResource`.`menutitle`, `modResource`.`donthit`, `modResource`.`privateweb`, `modResource`.`privatemgr`, `modResource`.`content_dispo`, `modResource`.`hidemenu`, `modResource`.`class_key`, `modResource`.`context_key`, `modResource`.`content_type`, `modResource`.`uri`, `modResource`.`uri_override`, `modResource`.`hide_children_in_tree`, `modResource`.`show_in_tree`, `modResource`.`properties`, IFNULL(`TVenddateevent`.`value`, '') AS `endDateEvent`, IFNULL(`TVstartdateevent`.`value`, '') AS `startDateEvent` FROM `np20PR_site_content` AS `modResource` LEFT JOIN `np20PR_site_tmplvar_contentvalues` `TVenddateevent` ON `TVenddateevent`.`contentid` = `modResource`.`id` AND `TVenddateevent`.`tmplvarid` = 10 LEFT JOIN `np20PR_site_tmplvar_contentvalues` `TVstartdateevent` ON `TVstartdateevent`.`contentid` = `modResource`.`id` AND `TVstartdateevent`.`tmplvarid` = 9 WHERE ( `TVenddateevent`.`value` > '1197719700' AND `TVstartdateevent`.`value` < '1197719700' AND `modResource`.`parent` IN (26,56,57,58) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 ) ORDER BY modResource.publishedon DESC LIMIT 10 "
0.0013900: SQL executed
0.0001261: Total rows: 0
0.0000260: Rows fetched
0.0000482: Prepared and processed TVs
0.0000021: Returning processed chunks
0.0095479: Total time
19 922 944: Memory usage
Ну теперь в phpMyAdmin пробуйте поиграть с запросом. Проверяйте where.
Какое значение в `TVenddateevent`.`value`? Тоже в секундах? Выведите оба значения для проверки.
Дальше. Значение '1197719700' = 15.12.2007. Т.е. дата начала должна быть меньше 15.12.2007, а дата окончания больше.
Дальше проверьте без родителей.
Какое значение в `TVenddateevent`.`value`? Тоже в секундах? Выведите оба значения для проверки.
Дальше. Значение '1197719700' = 15.12.2007. Т.е. дата начала должна быть меньше 15.12.2007, а дата окончания больше.
Дальше проверьте без родителей.
Поправил сниппет [[!date]] дата на вывод актуальная стала. Но AND не отрабатывает, если условие OR то выход результатов есть но они не соответствуют ожиданиям. Если в where будет одно и двух условий то выборка нормальная. Лог с нормальным сниппетом.
0.0002842: pdoTools loaded
0.0000789: xPDO query object created
0.0007520: Included list of tvs: endDateEvent, startDateEvent
0.0197010: leftJoined modTemplateVarResource as TVenddateevent
0.0005949: leftJoined modTemplateVarResource as TVstartdateevent
0.0006568: Added selection of modResource: SQL_CALC_FOUND_ROWS `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `richtext`, `template`, `menuindex`, `searchable`, `cacheable`, `createdby`, `createdon`, `editedby`, `editedon`, `deleted`, `deletedon`, `deletedby`, `publishedon`, `publishedby`, `menutitle`, `donthit`, `privateweb`, `privatemgr`, `content_dispo`, `hidemenu`, `class_key`, `context_key`, `content_type`, `uri`, `uri_override`, `hide_children_in_tree`, `show_in_tree`, `properties`
0.0000160: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `endDateEvent`
0.0000160: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `startDateEvent`
0.0001221: Replaced TV conditions
0.0008650: Processed additional conditions
0.0015941: Added where condition: `TVenddateevent`.`value`:>=1449552908, AND:`TVstartdateevent`.`value`:<=1449552908, modResource.parent:IN(26,56,57,58), modResource.published=1, modResource.deleted=0
0.0000648: Replaced TV conditions
0.0002379: Sorted by modResource.publishedon, DESC
0.0000060: Limited to 10, offset 0
0.0004930: SQL prepared "SELECT SQL_CALC_FOUND_ROWS `modResource`.`id`, `modResource`.`type`, `modResource`.`contentType`, `modResource`.`pagetitle`, `modResource`.`longtitle`, `modResource`.`description`, `modResource`.`alias`, `modResource`.`link_attributes`, `modResource`.`published`, `modResource`.`pub_date`, `modResource`.`unpub_date`, `modResource`.`parent`, `modResource`.`isfolder`, `modResource`.`introtext`, `modResource`.`richtext`, `modResource`.`template`, `modResource`.`menuindex`, `modResource`.`searchable`, `modResource`.`cacheable`, `modResource`.`createdby`, `modResource`.`createdon`, `modResource`.`editedby`, `modResource`.`editedon`, `modResource`.`deleted`, `modResource`.`deletedon`, `modResource`.`deletedby`, `modResource`.`publishedon`, `modResource`.`publishedby`, `modResource`.`menutitle`, `modResource`.`donthit`, `modResource`.`privateweb`, `modResource`.`privatemgr`, `modResource`.`content_dispo`, `modResource`.`hidemenu`, `modResource`.`class_key`, `modResource`.`context_key`, `modResource`.`content_type`, `modResource`.`uri`, `modResource`.`uri_override`, `modResource`.`hide_children_in_tree`, `modResource`.`show_in_tree`, `modResource`.`properties`, IFNULL(`TVenddateevent`.`value`, '') AS `endDateEvent`, IFNULL(`TVstartdateevent`.`value`, '') AS `startDateEvent` FROM `np20PR_site_content` AS `modResource` LEFT JOIN `np20PR_site_tmplvar_contentvalues` `TVenddateevent` ON `TVenddateevent`.`contentid` = `modResource`.`id` AND `TVenddateevent`.`tmplvarid` = 10 LEFT JOIN `np20PR_site_tmplvar_contentvalues` `TVstartdateevent` ON `TVstartdateevent`.`contentid` = `modResource`.`id` AND `TVstartdateevent`.`tmplvarid` = 9 WHERE ( `TVenddateevent`.`value` > '1449552908' AND `TVstartdateevent`.`value` < '1449552908' AND `modResource`.`parent` IN (26,56,57,58) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 ) ORDER BY modResource.publishedon DESC LIMIT 10 "
0.0009298: SQL executed
0.0001011: Total rows: 0
0.0000160: Rows fetched
0.0000260: Prepared and processed TVs
0.0000021: Returning processed chunks
0.0257952: Total time
19 398 656: Memory usage
Внимательно посмотрите на цифры. Событие идет — дата начала больше текущей даты. Т.е. это событие «предстоит», а не «идет».
Я.Скрин
Всё та же балалайка( Возможно у AND есть метасимвол? т.к OR работает.
Всё та же балалайка( Возможно у AND есть метасимвол? т.к OR работает.
Если есть возможность, киньте доступ в личку, гляну.
Отправил
Ok.
Сделал, проверяйте.
Благодарю, за помощь.
Опубликуйте плз рабочий вариант кода, ибо предстоит та же история) Спасибо!
У меня давно уже этого проекта нету, так же как и доступа к проду. И тут лучше between использовать
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.