ФорумРазработкаБазы данных → жанр, сезон, цветность, ориентация, география, стихия, оттенки

жанр, сезон, цветность, ориентация, география, стихия, оттенки

  • sweet15w

    Сообщения: 139 Репутация: N Группа: Кто попало

    Spritz 22 сентября 2015 г. 3:18

    в файле 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
    

    если добавляю то что он просит, база подвисает. есть ли возможность как то иначе сформировать данный запрос? кто что подскажет?

    1. db.sql (2)
  • sweet15w

    Сообщения: 139 Репутация: N Группа: Кто попало

    Spritz 22 сентября 2015 г. 3:24, спустя 6 минут 31 секунду

    блин. а на кой хрен я left join то использую????

  • Абырвалг

    Сообщения: 6477 Репутация: N Группа: Джедаи

    Spritz 22 сентября 2015 г. 6:37, спустя 3 часа 12 минут 46 секунд

    я х3, но тебе походу какой-то nosql или сфинкс нужен

  • artoodetoo

    Сообщения: 5131 Репутация: N Группа: в ухо

    Spritz 22 сентября 2015 г. 7:53, спустя 1 час 15 минут 36 секунд

    @sweet15w, а чем тебя не устроили 7 полей в одной таблице?

    ιιlllιlllι унц-унц

Пожалуйста, авторизуйтесь, чтобы написать комментарий!