@lexander
Новичок
Фильтры (Выборка по категориям)
На текущий момент есть таблица проектов
id, name, cat1, cat2, cat3 ... cat8, cat9
Т.е. есть 9 категорий в которых может находится конкретный проект.
Смысл заключается в том, что пользователь, просматривая каталог, может делать выборку
проектов из различных категорий и исключать из выборки проекты из других категорий.
Делается это посредством
[sql]
SELCT id From projects WHERE
(
cat1 IN (1,2,3)
OR cat2 IN (1,2,3)
OR cat3 IN (1,2,3)
- - - - - - - - -
OR cat8 IN (1,2,3)
OR cat9 IN (1,2,3)
)
AND
(
cat1 NOT IN (4,5,6)
AND cat2 NOT IN (4,5,6)
AND cat3 NOT IN (4,5,6)
- - - - - - - - -
AND cat8 NOT IN (4,5,6)
AND cat9 NOT IN (4,5,6)
)[/sql]
Где 1,2,3 - необходимые категории, а
4,5,6 - исключаемые.
Например:
Запрос вернёт
Можно ли оптимизировать такую выборку?
Пробовал перейти на таблицы ссылок
Как добиться результата
Будет ли это быстрее?
При 1,2,3 - необходимые категории, а
4,5,6 - исключаемые.
Должен вернуть
На текущий момент есть таблица проектов
id, name, cat1, cat2, cat3 ... cat8, cat9
Т.е. есть 9 категорий в которых может находится конкретный проект.
Смысл заключается в том, что пользователь, просматривая каталог, может делать выборку
проектов из различных категорий и исключать из выборки проекты из других категорий.
Делается это посредством
[sql]
SELCT id From projects WHERE
(
cat1 IN (1,2,3)
OR cat2 IN (1,2,3)
OR cat3 IN (1,2,3)
- - - - - - - - -
OR cat8 IN (1,2,3)
OR cat9 IN (1,2,3)
)
AND
(
cat1 NOT IN (4,5,6)
AND cat2 NOT IN (4,5,6)
AND cat3 NOT IN (4,5,6)
- - - - - - - - -
AND cat8 NOT IN (4,5,6)
AND cat9 NOT IN (4,5,6)
)[/sql]
Где 1,2,3 - необходимые категории, а
4,5,6 - исключаемые.
Например:
Код:
id cat1 cat2 cat3 cat4 cat5 cat6 cat7 cat8 cat9
1 1 7 9 0 0 0 0 0 0
2 2 5 10 0 0 0 0 0 0
3 1 8 0 0 0 0 0 0 0
Код:
id
1
3
Пробовал перейти на таблицы ссылок
Код:
project cat
1 1
1 7
1 9
2 2
2 5
2 10
3 1
3 8
Будет ли это быстрее?
При 1,2,3 - необходимые категории, а
4,5,6 - исключаемые.
Должен вернуть
Код:
project
1
3