|
Модераторы: skyboy |
|
yukodev |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 29.6.2012 Репутация: нет Всего: нет |
Здравствуйте.
Фильтры для интернет магазина. products(id,name.....) parameters (id,name) parameters_values (id,parameter_id,value) products_parameters(product_id,parameter_id,parameters_vallue_id) Сам механизм фильтрации реализован. Вот запрос (выбраны значения трех параметров)
Не могу понять как реализовать отсеивание ненужных фильтров. Например кликнули по параметру размер xxl - фильтр все правильно отфильтровал но также нужно не выводить фильтры по выбору которого не будет найден хоть один результат. Пример market.yandex.ua/guru.xml?CMD=-RR=9,0,0,0-VIS=70-CAT_ID=432460-EXC=1-PG=10&hid=91013 - после выбора фильтра ненужные отсеиваются Подскажите идею....... Это сообщение отредактировал(а) yukodev - 11.11.2013, 16:57 |
|||
|
||||
yukodev |
|
||||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 29.6.2012 Репутация: нет Всего: нет |
Наверно плохо объяснил.
Есть структура фильтры-товары: Запрос на фильтрацию товаров - выбрано 4 значения 3-х параметров
В фильтрах я выводил все параметры и выбирая параметры товары правильно фильтровались, но были случаи когда набор фильтров не находил товаров и пользователь получал сообщение "по вашему запросу ничего не найдено". Стала задача во время филтрацbи также отсеять фильтра которые не найдут хотя бы один результат. Долго думал, получилось сделать вариант при котором в фильтрах будут выводиться только те, параметры и их значения, которые есть в уже отфильтрованых товаров:
Этот запрос дает нам отфильтрованый набор параметров который неможет привести в дальнейшем к сообщению "по вашему запросу ничего не найдено". Но отсеялись часть фильтров по выбору которых налшись бы еще товары. Например фильтр: Тип -девочка -мальчик -новорожденный Размер -1 -2 -3 ..... В последнем случаи отсейки фильтров - при выборе Типа "девочка" останутся фильтра Тип -девочка -мальчик -новорожденный Размер -1 -2 -3 Но мальчик и новорожденный должны остаться потому, что они добавят результатов. Помогите оптимизировать отсеивание фильтров! 250wmr тому кто сможет решить задачу (торг уместен) Это сообщение отредактировал(а) yukodev - 12.11.2013, 12:10 |
||||
|
|||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 453 |
Уж коли кросс-постишь - то давай ссылки на другие форумы.
А коли готов оплачивать работу - так обращайся сразу во фриланс. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
yukodev |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 29.6.2012 Репутация: нет Всего: нет |
Поменял запрос результат тот же, может идеи у кого то есть?
Это сообщение отредактировал(а) yukodev - 21.11.2013, 22:56 |
|||
|
||||
yukodev |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 29.6.2012 Репутация: нет Всего: нет |
Кросс-пост: http://sqlinfo.ru/forum/viewtopic.php?pid=38218
|
|||
|
||||
Zloxa |
|
|||
Чо? Профиль Группа: Завсегдатай Сообщений: 3470 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
yukodev |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 29.6.2012 Репутация: нет Всего: нет |
||||
|
||||
Zloxa |
|
||||
Чо? Профиль Группа: Завсегдатай Сообщений: 3470 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
для начала тщательно ее формальзовать, затем лишь выразить языком программирования Это сообщение отредактировал(а) Zloxa - 22.11.2013, 13:28 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
||||
|
|||||
yukodev |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 29.6.2012 Репутация: нет Всего: нет |
Так?..... Не помогло - та же выдача получилась. |
|||
|
||||
Zloxa |
|
||||||
Чо? Профиль Группа: Завсегдатай Сообщений: 3470 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
ясен пень. Я же дословно перевел то что вы говорите. А говорите вы странные вещи, тяжело потдающиеся осмысленю. попробую включить телепатию и предложить вам
Возможно вам следует просто ранжировать выдачу выставить вперед те записи, которые имеют большее попадание в критерии фильтра по "или"? если это не катит, покажите на таком примере что вы ожидаете получить.
Что, по вашему, мнению на этих данных должен вернуть ваш запрос:
Это сообщение отредактировал(а) Zloxa - 22.11.2013, 13:53 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
||||||
|
|||||||
yukodev |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 29.6.2012 Репутация: нет Всего: нет |
Это запрос возвращает все актуальные значения параметров для выбранных товаров упуская те которые могут добавить результатов в выборку товаров Альтернативный запрос который дает тод же результат :
Это сообщение отредактировал(а) yukodev - 22.11.2013, 15:57 |
|||
|
||||
Zloxa |
|
|||
Чо? Профиль Группа: Завсегдатай Сообщений: 3470 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
Вы не мудрите, лучше пальцем покажите перечислите позиции, которые по вашему мнению должны вернуться. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
yukodev |
|
||||||||||||||||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 29.6.2012 Репутация: нет Всего: нет |
Данные:
Первая выборка - входящая опция "опция_1_1" параметра "Параметр1":
Результат:
Ожидаемый результат:
Потенциальный рез.
То что опция выпала это понятно - выпала потому, что отфильтровались все опции которых нет в наборе продуктов полученых таким запросом. Нужно оптимизировать запрос так чтоб он не откидал "потенциально" нужные опции. Живой пример работы поожого фильтра: filter.kombox.ru/tv/ ---------------------------Пример 2----------------------- Выборка опций 2-го параметра:
Результат:
Ожидаемый результат:
Добавлено @ 17:34 Еще словами как это должно работать: 1) Фиксируем опцию одного параметра, например "опция_1_1", тогда мы должны выбрать те опции, которые сочитаются с опция_1_1 других параметров а также все остальные опции первого параметра (которому пренадлежит опция_1_1) 2)Фиксируем два параметра, например, "опция_1_1" + "опция_2_1" (при этом опция_2_1 доступна для выбора так как она сочитается с опция_1_1 также незабываем что это опции разных параметров) тогда мы должны выбрать опции которые сочитаются с опция_1_1 первого параметра и опция_2_1 второго параметра а также остальные опции второго параметра которые сочитаются с опция_1_1 первого параметра 3) Фиксируем 2 опции 1-го параметра опция_1_1(230 товаров), опция_1_2 (120 товаров) получаем 350 товаров(для примера). Дальше во втором параметре нам допустимы опции которые сочитаются и с опция_1_1 и с опция_1_2. Например опция_2_1 сочитается с опция_1_1 а опция_2_2 сочитается с опцией_1_2. и Если наш следующий выбор будет опция_2_1 то все товары опции_1_2 не покажутся а сама опция станет неактивной(заблокированной) но будет отмечена(на результат не повлеяет но если мы решим еще выбрать опция_2_2 то она опция_1_2 разблокируется) ------------------------------------------ Пример для понимания логики: _http://filter.kombox.ru/tv/ Параметр частота обновления выбираем 200 и 400 Гц. Дальше параметр Формат телевизора выбираем 21:9 - 400Гц заблокировалась. Дальше добавляем Формат 16:9 - 400Гц разблокировалась. Вот такая логика зависимости. Это сообщение отредактировал(а) yukodev - 22.11.2013, 17:36 |
||||||||||||||||
|
|||||||||||||||||
Zloxa |
|
|||
Чо? Профиль Группа: Завсегдатай Сообщений: 3470 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
yukodev, и все таки я тупой. Я не понимаю чего вы мне столькобукв понаписали, зачем вы мне пишите запросы, которые делают не то что вы хотите, я не понимаю что у вас откуда выпадает и чем выпавшее отличается от выбранного.
Я привел пример данных. Просто перечислите мне те товары, которые должны отобраться из того набора. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
Zloxa |
|
|||
Чо? Профиль Группа: Завсегдатай Сообщений: 3470 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
В конце концов мы выбираем по (частота_обновления in (200,400) and Формат_телевизора in (21:9,16:9)) Для того чтобы посчитать количество по опциям, после применнения фильтра, группируемся собственно по типу опции и считаем count(disticnt товар) -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MySQL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |