Решено: MySQL "сквозное" объединение таблиц

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

IMB
Сообщения: 2567
ОС: Debian

Решено: MySQL "сквозное" объединение таблиц

Сообщение IMB »

Доброго дня!
Имеется база данных MySQL со следующей структурой:

Код: Выделить всё

таблица product: поле id
                 поле name - данные берутся из таблицы products
                 поле focus - данные берутся из таблицы focus
                 поле provider - данные берутся из таблицы provider
таблица products: поле id
                 поле name - содержит название
                 поле type - данные берутся из таблицы types
таблица providers: поле id
                   поле name
таблица types: поле id
              поле name - содержит название типа
таблица focus: поле id
              поле value - содержит фокусное расстояние

Я без проблем выбираю имя, фокус, производителя на основании известного product.id запросом вида:

Код: Выделить всё

select product.name, focus.value, providers.name as provider from product, products, focus, providers where product.id = 'нужный индекс' and product.name = products.id and product.focus = focus.id and product.provider = providers.id

В результате я получаю таблицу вида:

Код: Выделить всё

+--------------------------+---------------------------+------------------------+
              name                   value                      provider
+--------------------------+---------------------------+------------------------+
  название  аппарата         фокусное расстояние         производитель
+--------------------------+---------------------------+------------------------+

В данной таблице, для полноты картины, не хватает только данных о принадлежности аппарата к определенному типу, скажем камера, компьютер, плеер и т.д.
Я не могу сообразить как надо модифицировать запрос, если такое возможно, чтобы в результирующей таблице появилось поле type. Так сказать, возможно ли организовать "сквозной" запрос - по product.id я выбираю products.type, по которому уже смотрю types.name. При этом важно выбрать именно имя, описывающее тип, а не цифровой идентификатор, который я смог получить слегка модифицировав приведенный запрос.
Если это, один запрос для выборки всех данных, организовать не возможно, то как лучше организовать получение всех необходимых данных?
Спасибо.
Спасибо сказали:
Turbid
Сообщения: 175
ОС: Debian

Re: Решено: MySQL "сквозное" объединение таблиц

Сообщение Turbid »

Вам скорее сюда: http://www.mysql.ru/webboard
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: Решено: MySQL "сквозное" объединение таблиц

Сообщение IMB »

Разобрался, видимо к вечеру "мышление" уже не работало как надо.
Запрос принял вид:

Код: Выделить всё

select product.name, focus.value, providers.name as provider, types.name from product, products, focus, providers, types where product.id = 'нужный индекс' and product.name = products.id and product.focus = focus.id and product.provider = providers.id and products.type = types.id

Выходная таблица:

Код: Выделить всё

+--------------------------+---------------------------+------------------------+-----------------+
              name                   value                      provider                 type
+--------------------------+---------------------------+------------------------+-----------------+
  название  аппарата         фокусное расстояние         производитель           тип оборудования
+--------------------------+---------------------------+------------------------+-----------------+
Спасибо сказали: