|
|
|
Фильтрация и подсчет товаров для EAV
|
|||
|---|---|---|---|
|
#18+
Добрый вечер, гуру SQL, помогите идеей оптимизации подсчета товаров для фасеточного фильтра на EAV. Пока есть такая идея http://sqlfiddle.com/#!2/72872/6 , но она очень фигово выглядит. И пример запроса прямо сюда: Код: sql 1. 2. 3. запрос выбирает все возможные продукты при существующей фильтрации: 10 - это значение option1 и 6,8- значения option2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2013, 23:18:28 |
|
||
|
Фильтрация и подсчет товаров для EAV
|
|||
|---|---|---|---|
|
#18+
zion03, Хм, впервые вижу, чтобы этот запрос писали через GROUP_CONCAT и FIND_IN_SET :) Обычно его пишут через IN и GROUP BY ... HAVING COUNT(*)=... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2013, 23:26:50 |
|
||
|
Фильтрация и подсчет товаров для EAV
|
|||
|---|---|---|---|
|
#18+
GROUP_CONCAT - это что первое в голову пришло. Как сделать выборку через GROUP BY ... HAVING COUNT(*)= понятно, а вот подсчет не очень. Если не сложно, можно пример через GROUP BY ... HAVING COUNT(*)= к запросу выше. Основная проблема для понимания - это учет зависимостей уже установленных фильтров, должна быть логика value_id IN (option_value1 or option_value1) AND pv.value_id IN (option_value2 or option_value2) т. е. OR если value из одной опции и AND из другой/соседней опции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2013, 23:44:08 |
|
||
|
Фильтрация и подсчет товаров для EAV
|
|||
|---|---|---|---|
|
#18+
Второй вариант такой: Код: sql 1. 2. 3. 4. 5. 6. 7. какой вариант лучше будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2013, 15:24:30 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38384252&tid=1836134]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 333ms |

| 0 / 0 |
