У товара есть 4 доп. свойства, куда вставляются картинки. Требуется вывести список товаров, у которых вставлена хотя бы одна картинка в любое свойство (или 2 картинки, или 3, или 4).
Для этого в ТДС пишу (пока использую только 2 св-ва с кодами 272 и 274):
$my_index_param=0;
$my_photo_condition = 0;
...
/* Ограничиваем по фото */
$external_propertys['is_photo'] = isset($_GET['is_photo']);
if (to_int($_GET['is_photo']) > 0)
{
$element['type'] = 1; // 0 - основное св-во, 1 - дополнительное
if ($my_index_param>0)
{
$element['prefix'] = 'OR('; // префикс
}
else
{
$element['prefix'] = 'AND('; // префикс
}
$element['property_id'] = '272';
$element['if'] = '!='; // Условие
$element['value'] = '""';
$element['sufix'] = "OR shop_list_of_properties_table.shop_list_of_properties_id='274' AND shop_properties_items_table.shop_properties_items_value != '')";
$param['select'][] = $element;
$my_photo_condition = 2;
$my_index_param = $my_index_param + 1;
/* Применять фильтр */
$external_propertys['apply_filter'] = true;
}
...
if ($count_condition > 0)
{
$count_condition_=$count_condition + $my_photo_condition;
$param['sql_group_by'] = 'GROUP BY shop_items_catalog_table.shop_items_catalog_item_id';
$param['sql_having'] = "HAVING COUNT(shop_properties_items_table.shop_properties_items_id) = {$count_condition_}";
}
else
{
$param['sql_having'] = 'HAVING 1 ';
}
Если не выбрано других доп. свойств, то всё выбирается, как надо. Запрос выглядит так:
Array ( [user_id] => 0 [current_group_id] => [select] => Array ( [0] => Array ( [type] => 1 [prefix] => AND( [property_id] => 272 [if] => != [value] => "" [sufix] => OR shop_list_of_properties_table.shop_list_of_properties_id='274' AND shop_properties_items_table.shop_properties_items_value != '') ) [1] => Array ( [type] => 0 [prefix] => OR ( [property_id] => 272 [if] => [value] => [sufix] => [name] => ) [2] => Array ( [type] => 0 [prefix] => 1 [property_id] => 272 [if] => [value] => [sufix] => ) [name] => ) [3] => Array ( [type] => 0 [prefix] => AND [property_id] => 272 [if] => = [value] => 19 [sufix] => [name] => shop_items_catalog_table.shop_shops_id ) ) [items_begin] => 0 [sql_having] => HAVING 1 [show_text] => [xml_show_tying_products] => [xml_show_group_property] => 1 [xml_show_group_type] => all )
Но если выбирается ещё какое-нибудь доп. св-во, то выбираются только записи (с учётом того доп. св-ва), у которых заполнено И 272 И 274 св-ва. Запрос выглядит так:
Array ( [user_id] => 0 [current_group_id] => [select] => Array ( [0] => Array ( [type] => 1 [prefix] => AND( [property_id] => 272 [if] => != [value] => "" [sufix] => OR shop_list_of_properties_table.shop_list_of_properties_id='274' AND shop_properties_items_table.shop_properties_items_value != '') ) [1] => Array ( [type] => 0 [prefix] => OR ( [property_id] => 272 [if] => [value] => [sufix] => [name] => ) [2] => Array ( [type] => 1 [prefix] => [property_id] => 265 [if] => = [value] => 360 [sufix] => [name] => ) [3] => Array ( [type] => 0 [prefix] => [property_id] => 265 [if] => [value] => [sufix] => ) [name] => ) [4] => Array ( [type] => 0 [prefix] => AND [property_id] => 265 [if] => = [value] => 19 [sufix] => [name] => shop_items_catalog_table.shop_shops_id ) ) [items_begin] => 0 [sql_group_by] => GROUP BY shop_items_catalog_table.shop_items_catalog_item_id [sql_having] => HAVING COUNT(shop_properties_items_table.shop_properties_items_id) = 3 [show_text] => [xml_show_tying_products] => [xml_show_group_property] => 1 [xml_show_group_type] => all )
Как сделать так, чтобы при выборе других доп. свойств выводились товары, у которых заполнено хотя бы одно из свойств: ИЛИ 272, ИЛИ 274?