Mysql SQL列名不明确

Mysql SQL列名不明确,mysql,Mysql,我在构建一个类似IMDB的新系统时遇到了问题。我的具体问题是,当我跑步时: CREATE VIEW `directors` AS SELECT `stars`.`id` AS `movie_id`, `stars`.`title`,`stars`.`rating`, `stars`.`storyline`, `stars`.`star`, `people_list`.`name` AS `director` FROM `stars` INNER JOIN `stars` ON

我在构建一个类似IMDB的新系统时遇到了问题。我的具体问题是,当我跑步时:

CREATE VIEW `directors` AS 
SELECT 
`stars`.`id` AS `movie_id`, 
`stars`.`title`,`stars`.`rating`, 
`stars`.`storyline`, 
`stars`.`star`, 
`people_list`.`name` AS `director` 
FROM `stars` 
INNER JOIN `stars` 
ON `movie_directors`.`movie` = `stars`.`id` 
INNER JOIN `people_list` 
ON `movie_directors`.`director` = `people_list`.`id` 
WHERE `movie_directors`.`enabled` = 1;
我得到以下错误:

#1052 - Column 'stars.id' in field list is ambiguous

我在这里发现的所有问题似乎都与在列名前面不加表名或视图名有关,因为我正在编写一个视图来构建另一个视图

您正在从
stars
中进行选择,然后在
stars
上选择
内部联接
ing:

SELECT ... FROM stars INNER JOIN stars

根据您的查询,我认为您可能想加入
电影导演

您从
明星中进行选择,然后在
明星中选择
内部加入

SELECT ... FROM stars INNER JOIN stars
根据您的查询,我认为您可能希望加入电影导演。

您使用的是自连接(starts表使用了两次),在这种情况下,您需要一个别名来引用正确的表实例

  CREATE VIEW `directors` AS 
  SELECT 
      `stars`.`id` AS `movie_id`
    , `stars`.`title`
    ,`stars`.`rating`
    , `stars`.`storyline`
    , `stars`.`star`
    , `people_list`.`name` AS `director` 
  FROM `stars` 
  INNER JOIN `stars` as s2 ON `movie_directors`.`movie` = s2.`id` 
  INNER JOIN `people_list` ON `movie_directors`.`director` = `people_list`.`id` 
  WHERE `movie_directors`.`enabled` = 1;
您使用的是自联接(starts表使用了两次),在这种情况下,您需要一个别名来引用适当的表实例

  CREATE VIEW `directors` AS 
  SELECT 
      `stars`.`id` AS `movie_id`
    , `stars`.`title`
    ,`stars`.`rating`
    , `stars`.`storyline`
    , `stars`.`star`
    , `people_list`.`name` AS `director` 
  FROM `stars` 
  INNER JOIN `stars` as s2 ON `movie_directors`.`movie` = s2.`id` 
  INNER JOIN `people_list` ON `movie_directors`.`director` = `people_list`.`id` 
  WHERE `movie_directors`.`enabled` = 1;

我认为这是因为你没有正确地使用别名

应该是这样的

选择。。。 来自星星
内部连接星星作为另一个名字

我认为这是因为你的别名不正确

应该是这样的

选择。。。 来自星星
内部连接星号作为另一个名称

看起来不明确,因为您有两个对
星号
表的引用。您的
FROM
子句和第一个内部联接

看起来您打算加入
电影导演
而不是
内部加入明星
条款。例如

CREATE VIEW `directors` AS SELECT 
 `stars`.`id` AS `movie_id`, 
 `stars`.`title`,`stars`.`rating`, `stars`.`storyline`, `stars`.`star`, `people_list`.`name` AS `director`
FROM `stars` 
INNER JOIN `movie_directors` ON `movie_directors`.`movie` = `stars`.`id` 
INNER JOIN `people_list` ON `movie_directors`.`director` = `people_list`.`id` WHERE `movie_directors`.`enabled` = 1;

希望这有帮助

它看起来不明确,因为您有两个对
stars
表的引用。您的
FROM
子句和第一个内部联接

看起来您打算加入
电影导演
而不是
内部加入明星
条款。例如

CREATE VIEW `directors` AS SELECT 
 `stars`.`id` AS `movie_id`, 
 `stars`.`title`,`stars`.`rating`, `stars`.`storyline`, `stars`.`star`, `people_list`.`name` AS `director`
FROM `stars` 
INNER JOIN `movie_directors` ON `movie_directors`.`movie` = `stars`.`id` 
INNER JOIN `people_list` ON `movie_directors`.`director` = `people_list`.`id` WHERE `movie_directors`.`enabled` = 1;

希望这有帮助

用电影导演的
替换来自明星的
“来自明星加入明星”什么?这是故意的吗?用电影导演的“从明星加入明星”来代替“从明星加入明星”什么?这是故意的吗?