2016-05-19 21 views
1

私は現在MySQLを使用しており、3つのテーブルから選択する必要があります。私は3つのテーブルを持っています:ゲーム、Game_genreとコメント。1つのJOINともう1つのLEFT JOINを使用して2つのテーブルに結合する

ゲームテーブルが where GameID is the PK

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

を使用している場合句では、FROM句にすべてのテーブルがリストされていません。最初のテーブルだけがそこにあります。そして、テーブル間の関係は、WHERE節ではなくON節に入ります。

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の教科書またはチュートリアルを参照してください。

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にあります。

また、列別名には一重引用符を使用しないでください。文字列と日付の定数には単一引用符を使用してください。

+0

コメント表 –

+0

@ HuiZhen。 。 。おそらく、 'join'キーが正しくない可能性があります。テーブルレイアウトやサンプルデータがなければ、質問内の情報のみを表示できます。 –

+0

投稿を編集しました。データは十分ですか? –

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 :)

+0

私はこれを試しましたが、それは、ゲームとGame_genreからデータを返すだけです。コメントテーブルではありません –

+0

可能であれば、コメントテーブル – Jagannath

+0

@Jagannathのデータスクリーンショットを表示してください。LEFT JOINとまったく同じです。 OUTERは冗長なキーワードです。 – siride

関連する問題