【问题标题】:Join 3 table in mysql在mysql中加入3个表
【发布时间】:2016-03-01 12:26:42
【问题描述】:

表 1 名称:nfc_film

列名 = id、film_id、标题、描述

表 2 名称:nfc_film_actor

列名 = id、actor_id、film_id

表 3 名称:nfc_actor

列名 = actor_id、first_name、last_name

问题:如何将这 3 个表连接在一起?

我想从表 nfc_actor 中获取值 first_name 和 last_name,但我的查询不起作用。

我的查询:

SELECT * 
FROM nfc_film 
INNER JOIN nfc_film_actor ON 
    nfc_film_actor.film_id = nfc_film.film_id 
INNER JOIN nfc_actor ON 
    nfc_actor.actor_id = nfc_film_actor.actor_id 
WHERE nfc_film.film_id = :filmid 

【问题讨论】:

  • 这个查询的结果是什么?你有任何错误吗?
  • 我觉得这个请求没问题。也许您可以向我们展示更多您的代码和查询的输出。
  • 这是什么:filmid ?错了!
  • 显示您如何准备参数:filmid 以及如何发送该查询
  • 请发布您面临的错误。这将有助于解决问题

标签: php mysql sql


【解决方案1】:

您不能在查询中使用* 选择器,因为id、actor_id 和film_id 存在于多个表中,这绝对是错误的。 您应该参考每个字段的具体名称。

如果您检查您的网络服务器error.log,您可以看到。

也许你的意思是:

SELECT first_name, last_name FROM nfc_film 
INNER JOIN nfc_film_actor
  ON nfc_film_actor.film_id = nfc_film.film_id 
INNER JOIN nfc_actor
  ON nfc_actor.actor_id = nfc_film_actor.actor_id 
WHERE nfc_film.film_id = nfc_film_actor.film_id

【讨论】:

    【解决方案2】:

    使用这个

     SELECT  nfc_actor.first_name,nfc_actor.last_name,
    FROM nfc_film 
    INNER JOIN nfc_film_actor 
    ON nfc_film_actor.film_id = nfc_film.film_id 
    INNER JOIN nfc_actor 
    ON nfc_actor.actor_id = nfc_film_actor.actor_id 
    WHERE nfc_film.film_id = 'some_id'; 
    

    在 'some_id' 的位置给出电影的 id

    【讨论】:

      猜你喜欢
      • 2012-07-16
      • 1970-01-01
      • 2013-12-01
      • 2020-10-24
      • 2012-01-14
      • 1970-01-01
      • 1970-01-01
      • 2015-09-22
      相关资源
      最近更新 更多