选择两层深的位置

时间:2019-04-12 06:53:35

标签: sql

我真的不知道如何在这句话的标题上写单词或不知道如何寻找解决方案,所以我决定在这里问。

基本上,我有三个表-eventsannouncersmedia。媒体包含一个引用播音员的外键,每个播音员都有一个引用事件的外键。我的目标是选择来自某个事件的所有媒体。

如果我的问题重复,我深表歉意,但我无法弄清楚搜索字词是否能为我提供解决方案。

说我的事件表包含以下信息:

  • 名称:varchar(200)
  • Id(PK):int

我的播音员表是:

  • 名称:varchar(200)
  • Id(PK):int
  • event_id(FK-事件):int

还有我的媒体表格:

  • media_id:varchar(32)
  • Id(PK):int
  • announcer_id(FK-播音员):int

如果事件表包含以下事件,名称:生日聚会,ID:1

播音员包含:

  • 名称:Speech1,ID:1,event_id:1
  • 名称:Speech2,ID:2,event_id:1

媒体包含:

  • media_id :(某些ID),Id:1,announcer_id:1
  • media_id :(某些ID),Id:2,announcer_id:1
  • media_id :(某些ID),ID:3,announcer_id:2
  • media_id :(某些ID),Id:4,announcer_id:2

我要运行的查询应返回所有媒体。

1 个答案:

答案 0 :(得分:2)

SELECT 
--whatever attributes you want to display from e,a,m
m.* 
FROM
event  e
INNER JOIN 
announcer a 
ON
e.id = a.event_id 
INNER JOIN
 media m 
ON 
 a.id = m.announcer_id 
 WHERE e.attribute_name = value 
 --(or any condition)