2016-12-14 7 views
4

私は2つのテーブルをマージしようとしています。 A studentテーブルとdepartmentテーブルがありますが、学生がいない部門は失いたくありません。 NATURAL JOINを使用すると、主キーがDEPT_IDであり、一部の部門には生徒がいないため、それらが失われます。そのため、マージされたテーブルには表示されません。私はあまりにも幸運を持っていないテーブルをマージする別の方法を見てみました。どのようにSQLの行を失うことなく2つのテーブルをマージできますか?

私の試み:

SELECT DEPT_NAME, 
COUNT(DISTINCT STUDENT_ID) AS NumberOfStudentsInDepartment 
FROM Students RIGHT JOIN Departments 
GROUP BY DEPT_NAME 
ORDER BY 2 DESC, 1 ASC; 
+0

に参加しましょう、おそらく "左は参加しますか"?私が "マージ"を誤解しない限り、あなたは意味します。いくつかのコードを提供しておけば助けになります。 – Reisclef

+1

'natural join'を使用している場合は、SQL Serverを使用していません。タグを削除しました。 –

答えて

4

使用権が

Select * from Students S RIGHT JOIN Department D on D.Dept_Id = S.Dept_id 

または左

Select * from Department D LEFT JOIN Students S on D.Dept_Id = S.Dept_id 

Learn more about how joins work here

+0

すみません。私は各学科の生徒の総数を見つけようとしています。私が通常の「NATURAL JOIN」を使用していたとき、正常に動作しました。しかし、 'RIGHT JOIN'ではエラーになります。なぜそれがそれを壊すか知っていますか?私の質問は疑問です。 –

+0

は、4行目でDEPT_NAME * ERROR BYエラー – bugwheels94

+0

GROUPを知らせる@NatashaAlexandrov: ORA-00905:あなたは、Oracle DB上でそれを実行している@NatashaAlexandrovキーワード –

関連する問題