sql - 选择两层深的位置

标签 sql

我真的不知道如何表达这句话的标题,也不知道如何搜索我的解决方案,所以我决定在这里提问。

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

如果我的问题重复,我深表歉意,但我无法找到搜索词来为我提供解决方案。

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

  • 名称:varchar(200)
  • ID(PK):整数

我的播音员表是:

  • 名称:varchar(200)
  • ID(PK):整数
  • event_id(FK - 事件):int

还有我的媒体表:

  • media_id:varchar(32)
  • ID(PK):整数
  • announcer_id(FK - 播音员):int

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

播音员包含:

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

媒体包含:

  • media_id:(某些 ID),ID:1,anner_id:1
  • media_id:(某些 ID),ID:2,anner_id:1
  • media_id:(某些 ID),ID:3,anner_id:2
  • media_id:(某些 ID),ID:4,anner_id: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)

关于sql - 选择两层深的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55646048/

相关文章:

mysql - SQL 查询以选择在同一个表的字段中添加日期的行

mysql - Node mysql插入到多对多表

sql - 通过组合键从 select 中删除记录

sql - 将两行的集合转换为一列

mysql - 使用 SQL 计算出特定事件发生的次数百分比

php - 显示以下用户帖子

php - 使用 PHP 解析时,WHERE NOT EXISTS 在 SQL 中出现语法错误

mysql - 完全连接两个不同的 SELECT 查询

php - 在 mysql 中选择每周明智的日期

mysql - 嵌套情况下的 NULL 值问题