【问题标题】:Natural join of 3 tables in mysqlmysql中3个表的自然连接
【发布时间】:2017-06-30 21:58:53
【问题描述】:

所以我有 3 个表,电影(包含列 id 和 name)、directors(id、first_name、last_name)和 movies_directors(movie_id 和 director_id)。我想组合这 3 个表,因为它们具有相同的值(director_id 和 movie_id),然后投影特定列。这就是我到目前为止所做的:

select first_name, last_name, name 
from movies natural join directors natural join movies_directors 
where movies_directors.movie_id=movies.id and  
movies_directors.director_id=directors.id; 

但是,最后生成的表是空的!我也尝试过使用视图,它适用于 2 个表(它返回组合表),但是当涉及到第三个表时,返回的表是空的。

【问题讨论】:

    标签: mysql natural-join


    【解决方案1】:

    自然联接要求联接中涉及的两个表具有一个名称相同的联接列,而您的架构则不是这种情况。使用 INNER JOIN 代替显式的 ON 子句:

    SELECT t1.name AS movie_name,
           t2.first_name,
           t2.last_name,
    FROM movies natural t1
    INNER JOIN directors t2
        ON t1.id = t2.movie_id
    INNER JOIN movies_directors t3
        ON t2.id = t3.director_id
    

    【讨论】:

      猜你喜欢
      • 2014-11-16
      • 2013-04-07
      • 1970-01-01
      • 2013-04-21
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-31
      相关资源
      最近更新 更多