в файле db.sql структура таблиц с данными
суть:
catalog_menu - наименование фильтров выборки
level - уровень (0 - самый верхний)
catalog_filter - собственно соответствие catalog_menu и catalog (для выборки)
в ней: catalog - id поля из таблицы каталог
filter - id из таблицы catalog_menu
parent - id из таблицы catalog_menu первого уровня (собственно этих записей 7: жанр, сезон, цветность, ориентация, география, стихия, оттенки)
грубо говоря у меня есть 7 типов фильтров.
каждый тип между собой объединяет данные, например если в группе 1 выбрано растения и животные - то выводятся и растения и животные, а если в группе 1 выбрано растения и животные, а в группе 2 выбраны весна - то выводятся только животные и растения с весны.
SELECT
catalog.alias AS alias,
catalog.id AS id,
catalog.picture AS picture,
catalog.name AS name,
catalog.content AS content
FROM
catalog
LEFT JOIN catalog_filter AS catalog_filter_1 ON ( catalog.id = catalog_filter_1.catalog )
LEFT JOIN catalog_filter AS catalog_filter_2 ON ( catalog.id = catalog_filter_2.catalog )
LEFT JOIN catalog_filter AS catalog_filter_3 ON ( catalog.id = catalog_filter_3.catalog )
LEFT JOIN catalog_filter AS catalog_filter_4 ON ( catalog.id = catalog_filter_4.catalog )
LEFT JOIN catalog_filter AS catalog_filter_5 ON ( catalog.id = catalog_filter_5.catalog )
LEFT JOIN catalog_filter AS catalog_filter_6 ON ( catalog.id = catalog_filter_6.catalog )
LEFT JOIN catalog_filter AS catalog_filter_7 ON ( catalog.id = catalog_filter_7.catalog )
WHERE
1
AND ( catalog_filter_1.filter IN ( 0,9,39 ) AND catalog_filter_1.parent = '1' )
AND ( catalog_filter_2.filter IN ( 0,43 ) AND catalog_filter_2.parent = '2' )
GROUP BY
catalog.id
ORDER BY
catalog.position,
catalog.id
LIMIT 0, 12
выдает
ERROR #1104: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET MAX_JOIN_SIZE=# if the SELECT is okay
если добавляю то что он просит, база подвисает. есть ли возможность как то иначе сформировать данный запрос? кто что подскажет?