我目前正在使用MySQL,我需要从3个表中进行选择。我有3个表:Game,Game_genre和评论。
Game_genre表 where GameID and GenreID is the PK
我试过的是
SELECT G.GameTitle, G.Company, G.ReleaseDate, G.Description, G.Price, GG.GenreName, G.Preowned, G.ImagePath, round((G.Price*0.8),2)'SalesPrice'
from game G, game_genre GG, comments C
LEFT JOIN C ON G.GameID
LEFT JOIN GG on G.GameID
WHERE G.GameID = GG.GameID;
然而,即使我给每个表一个别名
,这也会出现错误1066答案 0 :(得分:0)
当您使用JOIN
条款时,不要列出FROM
子句中的所有表格,只有第一个表格会在那里。表之间的关系在ON
子句中,而不是WHERE
子句。
SELECT G.GameTitle, G.Company, G.ReleaseDate, G.Description, G.Price, GG.GenreName, G.Preowned, G.ImagePath, round((G.Price*0.8),2)'SalesPrice'
FROM game G
LEFT JOIN C ON G.GameID = C.GameID
LEFT JOIN GG ON G.GameID = GG.GameID;
请查看您的SQL教科书或教程以了解基本语法。
答案 1 :(得分:0)
正确的语法是:
SELECT G.GameTitle, G.Company, G.ReleaseDate, G.Description, G.Price,
GG.GenreName, G.Preowned, G.ImagePath,
round((G.Price*0.8),2) as SalesPrice
FROM game G LEFT JOIN
comments C
ON G.GameID = C.GameId LEFT JOIN
game_genre GG
on G.GameId = GG.GameId;
我猜测Game_Genre
上的联接与GenreId
类似;但是,您的代码在GameId
上有。
另外,不要使用单引号作为列别名。仅对字符串和日期常量使用单引号。
答案 2 :(得分:0)
试试如下:
SELECT G.GameTitle, G.Company, G.ReleaseDate, G.Description, G.Price, GG.GenreName, G.Preowned, G.ImagePath, round((G.Price*0.8),2)'SalesPrice'
from game G
LEFT JOIN game_genre GG ON G.GameID = GG.GameID
LEFT JOIN comments C ON G.GameID = C.GameID
WHERE <your condition>
我建议你学习更多关于SQL语法的JOINS:)