2016-12-14 107 views
-1

以下是我正在为其中一个查询连接工作的内容,我尝试创建一个表,其中包含一般屏幕细节并结合电影细节。我不断收到错误1066.任何人都可以帮助或详细说明为什么?MySQL工作台错误1066

SELECT screening.ScreeningID, screening.MovieID, SeatCapacity, SeatsAvailable 
    FROM screening 
     LEFT JOIN movie 
    ON screening.ID = movie.ScreeningID 

    UNION 

SELECT MovieName, Director, Genre 
    FROM movie  
     RIGHT JOIN movie 
    ON screening.ID = movie.ScreeningID; 

UPDATE:

谢谢你们的答复,我一直是一个绝对完整的小白和过于复杂的东西(像往常一样)。经过更多的挖掘,这是我想出了完美的作品。我试图通过合并来自多个表格的数据来在一张表中筛选出座位可用性。

SELECT s1.ScreeningID, s1.MovieID, s1.SeatCapacity, s1.SeatsAvailable, m1.Director, m1.MovieName, m1.Genre

通过筛查S1,电影M1

WHERE m1.screeningID = s1.screeningID

+0

什么是不清楚的错误信息?你是否用['mysql-error-1066'](http://stackoverflow.com/questions/tagged/mysql-error-1066)标签阅读了其他任何问题? – shmosel

+0

你的第二个查询有'FROM电影',但是使用'ON screening.ID'。其中一个有错字吗? – Barmar

+0

这看起来不像是适当使用'UNION'。你能展示一个预期结果的样本吗? – Barmar

回答

0

你需要你的别名表,也各自在该UNION参与查询必须有相同数量的Ø f列。

0

注意:UNION是两个完整的(大多数不相关的)SELECT查询。

你的第二个查询:

SELECT MovieName, Director, Genre 
    FROM movie  
     RIGHT JOIN movie 
    ON screening.ID = movie.ScreeningID; 

甚至没有表或别名叫做screening。 (除了列计数不为UNION匹配),它也有movie包含两次表,所以你访问的每一个栏将是不明确的,除非你使用表的别名产生一个错误,例如:FROM movie AS m1

我建议首先让每个单独的查询自行工作,然后将它们与UNION语句组合起来。