2017-10-26 13 views
0

は、私が40本以下のグレードを持っている学生のためのコースコード&名で、学生数&名を取得しようとしていることは、私はそれが下のグレードを出力している内部結合が機能しません。出力繰り返し行

   SELECT S.name, S.no, C.code, C.name, T.grade 
       FROM student S INNER JOIN course C INNER JOIN take T 
       WHERE grade <40; 

を持っているものです40だが、128行が返され、みんなの名前と番号のグレードが繰り返されている。

申し訳ありませんが、これは間違っていますが、初心者です。

+0

*絶対に* FROM句にカンマを使用しないでください。 *常に*適切で明示的な 'JOIN'構文を使用します。 –

+0

グレードはどのテーブルに属していますか? –

+0

@NilesTannerグレードが 'take'テーブルにあります – whocares6773

答えて

0

あなたはお互いにテーブルを関連付ける条件が必要です。

SELECT S.name, S.no, C.code, C.name, T.grade 
FROM student AS s 
JOIN take AS t ON t.student_no = s.no 
JOIN course AS c ON t.course_code = c.code 

takeテーブル内の実際の外部キー列とstudent_nocourse_codeを交換してください。

+0

エラーを取得しています "エラーコード:1054. 'on clause'の 't.student_no'列が不明です – whocares6773

+0

欠落している列の一部をテーブルの実際の列に置き換える必要がありました。 – Barmar

+0

ありがとうございました。皆さん、伝説の仕事を手伝ってくれてありがとう。 – whocares6773

0
Simple syntax refer it 



SELECT Orders.OrderID, Customers.CustomerName, Shippers.ShipperName 
FROM ((Orders 
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID) 
INNER JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID); 
+0

私は3つのテーブルを使用しているので、table3はどこに行きますか? – whocares6773

+0

上記の構文を見つけてください –

関連する問題