Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Как правильно составить сложный запрос в MYSQL


Автор: Rusman 4.9.2012, 08:40
Здравствуйте!
Значит задача следующая. Допустим у нас есть общая такая таблица:

ITEMS:
ID
TYPE_ID
NAME
TEXT


К примеру мы хотим в зависимости от типа чтобы дополнительно у записей были еще поля.
к примеру 
тип: Новость имеет: DATE и ANONCE
тип: Книга имеет: AUTHOR и PRICE

Думаю делать так: берем дополнительные таблицы к примеру 
ITEMS_PARAM: ID,TYPE_ID, NAME (Здесь добавляем какие параметры к какому типу относятся)
ITEMS_PARAM_VALUE: ITEM_ID,PARAM_ID,VALUE (Здесь уже уставляем значения)

Сейчас как правильно составить запрос, чтобы в результате мы имели массив в зависимости от типа:
Например: Новость в результате получили: 
$result = array(ID,TYPE_ID,NAME,TEXT,DATE,ANONCE)
а при условии Книги
$result = array(ID,TYPE_ID,NAME,TEXT,AUTHOR,PRICE)
и чтобы в запросе можно было сделать сортировку по доп. параметрам.

Заранее большое спасибо!

Автор: skyboy 4.9.2012, 08:44
inner join же!

Автор: Rusman 19.9.2012, 13:49
Цитата(skyboy @ 4.9.2012,  08:44)
inner join же!

Не могли бы Вы примерный запрос написать. т.к. inner join я понимаю это как объединение таблиц и с этим проблем нет, но вот я описал немного другой случай.
Или я не так понимаю?

Спасибо!

Автор: skyboy 19.9.2012, 22:25
подключаешь к таблице с айтемами таблицу с параметрами, отсеиваешь только параметр "Автор" или "цена"
если надо несколько полей, на каждое поле подключаешь две таблицы. да, получается громоздко. но так и работает архитектура Entity-Attribute-Value

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)