Могу ли я использовать MySQL для объединения двух таблиц на основе отношений с третьей таблицей? - PullRequest
2 голосов
/ 10 июля 2009

Допустим, у вас есть три таблицы с именами Item, Event и Seat, сконструированные так:

Пункт
Id (int)
Event_id (int)
Раздел (int)

Событие
Id (int)
Venue_id (int)
Конфигурация (int)

сиденье
Id (int)
Venue_id (int)
Конфигурация (int)
Раздел (int)
Face_value (int)

Я пытаюсь создать запрос MySQL, который извлекает все записи из таблицы элементов и включает номинальную стоимость для каждого элемента. Для этого запрос должен:

  1. Используйте значение Item.Event_id и сопоставьте его с Event.Id
  2. Для этой записи в таблице событий она должна взять Event.Venue_id и Event.Configuration и найти запись в таблице Seat, которая имеет одинаковые значения для обоих AND и имеет то же значение для Section, что и Item.Section. Затем он должен вернуть Face_value.

У меня много проблем с построением этого из-за способа, которым он объединяет информацию из всех трех таблиц. Есть идеи, как к этому подойти? Или это невозможно сделать в SQL?

Ответы [ 2 ]

4 голосов
/ 10 июля 2009
SELECT `Item`.*, `Seat`.`Face_value`
FROM `Item`
JOIN `Event` ON `Event`.`Id` = `Item`.`Event_id`
JOIN `Seat` USING (`Venue_id`, `Configuration`)
WHERE `Seat`.`Section` = `Item`.`Section`
1 голос
/ 10 июля 2009

То же, что и хаос , но я предпочитаю этот синтаксис: -)

select s.Section, s.Configuration, s.Face_value
from   Item i
       inner join Event e
       on e.id = i.Event_id
       inner join Seat s
       on s.Venue_id = e.Venue_id
    and
        s.Configuration = e.Configuration
    and
        s.Section = i.Section
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...