SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 19.07.2011 17:20:17

superfoxter
Участник
Зарегистрирован: 19.07.2011
Сообщений: 1

Помогите составить запрос без создания временной таблицы

Хочу сделать у товара характеристики. В характеристиках будет указано как принадлежность к бренду, так и к размеру весу и т.д. Плодить таблицы не хочу. Механизм должен быть универсальным. Вот описание:

Есть таблица категорий:
category
id   name
3   автокресла


Есть таблица товара:
tovar
id  id_cat   name   active
1     3      кресло    1       


Есть таблица типов характеристик:
features_names
id   name      id_cat
9    бренд       3


Есть таблица значений характеристик:
features_values
id   id_feat   name
11    9         chicco
12    9         peg perego


Есть таблица связи:
features_links
id_tovara      features_value      features_name
    1                    11                       3
    1                    12                       3


Запрос:
select distinct(features_links.id_tovara), tovar.name  from features_links, tovar where features_links.id_features_value = 11 GROUP BY features_links.id_tovara

Так я получаю Creating tmp table и большие проблемы со скоростью. И этот запрос - не предел. В идеале я еще хочу сортировать данные. А еще наглость с мой стороны будет попросить выбрать не один бренд а несколько (вдруг пользователь хочет посмотреть все товары этих двух или трех брендов) а это значит: select distinct(features_links.id_tovara), tovar.name  from features_links, tovar where features_links.id_features_value = 11 OR features_links.id_features_value = 12 GROUP BY features_links.id_tovara


Простите, может у меня не правильно изначально построена логика, но я вижу эту связь именно так.


Самый главный вопрос к знатокам: Как уйти от Creating tmp table? И как добиться максимально высокой скорости? Спасибо.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson