Запрос, ограничение по доп. полю с сортировкой

#
Запрос, ограничение по доп. полю с сортировкой
Подскажите как правильно сформировать запрос к магазину: одновременно выборка по одному доп. параметру + сортировка по второму (дате)

в API есть выборка по 2 полям и сортировка, но их скрещивание не работает:

$element['type'] = 1;
$element['property_id'] = 153;
$element['prefix'] = ' AND (';
$element['if'] = '=';
$element['value'] = '90';
$element['sufix'] = '';
$param['select'][] = $element;

$element['type'] = 1;
$element['property_id'] = 149;
$element['prefix'] = ' OR ';
$element['if'] = '!=';
$element['value'] = "''";
$element['sufix'] = ' ) GROUP BY shop_items_catalog_table.shop_items_catalog_item_id
HAVING COUNT(shop_properties_items_table.shop_properties_items_id)= 2';
$param['select'][] = $element;

$param['items_field_order'] = " CONVERT(CONCAT(SUBSTR(shop_properties_items_value, 7, 4), CHAR(45), SUBSTR(shop_properties_items_value, 4, 2), CHAR(45), SUBSTR(shop_properties_items_value, 1, 2)),  DATE)";

$param['items_order'] = 'ASC';
#
Re: Запрос, ограничение по доп. полю с сортировкой
sos
и возможно ли в принципе такое сделать?
Модератор
#
Re: Запрос, ограничение по доп. полю с сортировкой
Для даты создано доп. свойство или используется стандартное свойство товара "Дата"? Вам необходима фильтрация товаров по 2-м параметрам одновременно и сортировкой по одному из них?
#
Re: Запрос, ограничение по доп. полю с сортировкой
да, есть доп. св-во типа Дата, и доп. св-во - список

нужно выбрать все товары с одним значением списка и отсортированные по этой дате
Модератор
#
Re: Запрос, ограничение по доп. полю с сортировкой

$element['type'] = 1;
$element['property_id'] = Индентификатор доп. св-ва типа "Список";
$element['prefix'] = ' AND (';
$element['if'] = '=';
$element['value'] = 'Значение доп. свойства типа "Список"';
$element['sufix'] = '';
$param['select'][] = $element;

$element['type'] = 1;
$element['property_id'] = Индентификатор доп. св-ва типа "Дата";
$element['prefix'] = ' OR';
$element['if'] = '=';
$element['value'] = 'Значение доп. свойства типа "Дата"';
$element['sufix'] = ') GROUP BY shop_items_catalog_table.shop_items_catalog_item_id
HAVING COUNT(shop_properties_items_table.shop_properties_items_id)= 2 ORDER BY IF( `shop_list_of_properties_id` =Индентификатор доп. св-ва типа "Дата", CONVERT( CONCAT( SUBSTRING( shop_properties_items_value, 7, 4 ) , CHAR( 45 ) , SUBSTRING( shop_properties_items_value, 4, 2 ) , CHAR( 45 ) , SUBSTRING( shop_properties_items_value, 1, 2 ) ) , DATE ) , 0 ) DESC';
$param['select'][] = $element;


В приведенном выше примере используется сортировка записей по УБЫВАНИЮ значений доп. свойства типа "Дата", если необходимо сортировать записи по ВОЗРАСТАНИЮ доп. свойства типа "Дата", то строку

ORDER BY IF( `shop_list_of_properties_id` =Индентификатор доп. св-ва типа "Дата", CONVERT( CONCAT( SUBSTRING( shop_properties_items_value, 7, 4 ) , CHAR( 45 ) , SUBSTRING( shop_properties_items_value, 4, 2 ) , CHAR( 45 ) , SUBSTRING( shop_properties_items_value, 1, 2 ) ) , DATE ) , 0 ) DESC
  

необходимо заменить на следующую строку:


ORDER BY IF( `shop_list_of_properties_id` =Индентификатор доп. св-ва типа "Дата", CONVERT( CONCAT( SUBSTRING( shop_properties_items_value, 7, 4 ) , CHAR( 45 ) , SUBSTRING( shop_properties_items_value, 4, 2 ) , CHAR( 45 ) , SUBSTRING( shop_properties_items_value, 1, 2 ) ) , DATE ) ,  01.01.2030) ASC
#
Re: Запрос, ограничение по доп. полю с сортировкой
если сделать именно такой запрос (с какой-то датой) ругается на

check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY shop_items_catalog_date_time Asc LIMIT 0, 10' at line 25


но еще нужно, чтобы дата просто была непустая, и по ней сортировать, т. е. непонятно какое значение вписывать в - Значение доп. свойства типа "Дата"
если поменять строчки со значением даты на

$element['if'] = '!=';
$element['value'] = "''";


ошибка та же

вот итоговый запрос, есть ли в нем ошибки?

$element['type'] = 1;
$element['property_id'] = 153;
$element['prefix'] = ' AND (';
$element['if'] = '=';
$element['value'] = '90';
$element['sufix'] = '';
$param['select'][] = $element;

$element['type'] = 1;
$element['property_id'] = 149;
$element['prefix'] = ' OR';
$element['if'] = '!=';
$element['value'] = "''";
$element['sufix'] = ') GROUP BY shop_items_catalog_table.shop_items_catalog_item_id
HAVING COUNT(shop_properties_items_table.shop_properties_items_id)= 2 ORDER BY IF( `shop_list_of_properties_id` =149, CONVERT( CONCAT( SUBSTRING( shop_properties_items_value, 7, 4 ) , CHAR( 45 ) , SUBSTRING( shop_properties_items_value, 4, 2 ) , CHAR( 45 ) , SUBSTRING( shop_properties_items_value, 1, 2 ) ) , DATE ) , 0 ) DESC';
$param['select'][] = $element;
Модератор
#
Re: Запрос, ограничение по доп. полю с сортировкой
Попробуйте следующий код:

$element['type'] = 1;
$element['property_id'] = 153;
$element['prefix'] = ' AND (';
$element['if'] = '=';
$element['value'] = '90';
$element['sufix'] = '';
$param['select'][] = $element;

$element['type'] = 1;
$element['property_id'] = 149;
$element['prefix'] = ' OR';
$element['if'] = '!=';
$element['value'] = "''";
$element['sufix'] = ') GROUP BY shop_items_catalog_table.shop_items_catalog_item_id
HAVING COUNT(shop_properties_items_table.shop_properties_items_id)= 2';
$param['select'][] = $element;

$param['items_field_order'] = 'IF( shop_list_of_properties_table.shop_list_of_properties_id =149, CONVERT( CONCAT( SUBSTRING( shop_properties_items_value, 7, 4 ) , CHAR( 45 ) , SUBSTRING( shop_properties_items_value, 4, 2 ) , CHAR( 45 ) , SUBSTRING( shop_properties_items_value, 1, 2 ) ) , DATE ) , 0 )';

$param['items_order'] = 'DESC';
#
Re: Запрос, ограничение по доп. полю с сортировкой
ошибки нет, по первому условию отбирается, но на сортировку по дате не реагирует
#
Re: Запрос, ограничение по доп. полю с сортировкой
вопрос крайне горячий))

а если не через запрос, можно ли в админке, при добавлении элемента, основную дату элемента приравнивать к дате из доп. св-в, основная не используется
и сортировать потом по ней, по осн. св-ву
заполнять очень нужно через доп. св-ва, т к много дат, путаница со вкладками

а с запросом совсем туго( самостоятельно не получается
sos
Модератор
#
Re: Запрос, ограничение по доп. полю с сортировкой
Пришлите в техническую поддержку адрес сайта и данные доступа в центр администрирования.
Авторизация