我遇到了一个新的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
我在这里发现的所有问题似乎都与您在列名前面加上表名或者在这种情况下是一个视图名称有关,因为我写的是构建另一个视图的视图
答案 0 :(得分:2)
您选择的是stars
,然后是INNER JOIN
stars
:
SELECT ... FROM stars INNER JOIN stars
我认为您可能希望根据您的查询加入movie_directors
。
答案 1 :(得分:0)
您正在使用自联接(启动表使用两次)在这种情况下,您需要一个别名来引用正确的表实例
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;
答案 2 :(得分:0)
我认为这是因为你没有正确别名。
应该是
选择...... 来自明星 内部联接明星为 anothername
答案 3 :(得分:0)
它看起来很模糊,因为你有两个对stars
表的引用。您的FROM
条款和您的第一个INNER JOIN。
您似乎打算加入movie_directors
而不是INNER JOIN stars
条款。例如。
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;
希望这有帮助!