我可以根据与第三个表的关系使用MySQL连接两个表吗?

时间:2009-07-10 17:20:03

标签: sql mysql

假设您有三个名为Item,Event和Seat的表,其构造如下:

物品
Id(int)
Event_id(int)
Section(int)

事件
Id(int)
Venue_id(int)
配置(int)

座椅
Id(int)
Venue_id(int)
配置(int)
Section(int)
Face_value(int)

我正在尝试构建一个MySQL查询,该查询从Item表中提取所有条目,并包含每个项目的Face Value。为此,查询必须:

  1. 使用Item.Event_id值并将其与Event.Id
  2. 匹配
  3. 对于Event表中的该条目,它必须采用Event.Venue_id和Event.Configuration,并在Seat表中找到两个AND具有相同值的条目,并且Section与Item.Section具有相同的值。然后必须返回Face_value。
  4. 我在构建这个时遇到了很多麻烦,因为它结合了来自所有三个表的信息。有关如何接近它的任何想法?或者这在SQL中是不可能的?

2 个答案:

答案 0 :(得分:4)

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 :(得分:1)

chaos相同,但我更喜欢这种语法: - )

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