我正在构建一个新的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我在这里发现的所有问题似乎都与没有在列名前加上表名或视图名有关,因为我正在编写一个视图来构建另一个视图
发布于 2016-11-20 05:03:20
您正在从stars中选择,然后在stars上选择INNER JOINing
SELECT ... FROM stars INNER JOIN stars我认为您可能希望根据您的查询与movie_directors进行连接。
发布于 2016-11-20 05:03:59
您正在使用自连接(starts table被使用两次),在这种情况下,您需要一个别名来引用正确的表实例
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;发布于 2016-11-20 05:05:42
我认为这是因为您没有正确地使用别名。
它应该是这样的
选择...从星体内部加入星体作为另一个名字
https://stackoverflow.com/questions/40697833
复制相似问题