前提
MySQLを使用。
実現したいこと
外部結合にてstudent_nameごとにすべてのcredit_catを結合させたい。
発生している問題・エラーメッセージ
問題
外部結合を実施した際にすべてのcredit_catが存在しないstudent_nameにおいて
存在しないcredit_catが消えてしまう。(NULLにならない)
例)CreditsEarnedテーブルのBobはcredit_catはA, BのみでCがない。
外部結合をした際にBobのcredit_catのCはNULLであって欲しい。
(student_nameごとにcredit_catはA, B, Cが割り当てられて欲しい。)
該当のソースコード
SQL
1SELECT 2CR.student_name 3,CR.credit_cat 4FROM CreditsEarned AS CR 5RIGHT JOIN Categories AS CA 6ON CR.credit_cat = CA.credit_cat 7GROUP BY CR.student_name, CR.credit_cat 8;
CREATE TABLE Categories (credit_cat CHAR(1) NOT NULL, rqd_credits INTEGER NOT NULL); CREATE TABLE CreditsEarned --主キーなし (student_name CHAR(10) NOT NULL, credit_cat CHAR(1) NOT NULL, credits INTEGER NOT NULL); INSERT INTO Categories VALUES ('A', 10); INSERT INTO Categories VALUES ('B', 3); INSERT INTO Categories VALUES ('C', 5); INSERT INTO CreditsEarned VALUES ('Joe', 'A', 3), ('Joe', 'A', 2), ('Joe', 'A', 3), ('Joe', 'A', 3), ('Joe', 'B', 3), ('Joe', 'C', 3), ('Joe', 'C', 2), ('Joe', 'C', 3), ('Bob', 'A', 2), ('Bob', 'C', 2), ('Bob', 'A', 12), ('Bob', 'C', 4), ('John', 'A', 1), ('John', 'B', 1), ('Mary', 'A', 1), ('Mary', 'A', 1), ('Mary', 'A', 1), ('Mary', 'A', 1), ('Mary', 'A', 1), ('Mary', 'A', 1), ('Mary', 'A', 1), ('Mary', 'A', 1), ('Mary', 'A', 1), ('Mary', 'A', 1), ('Mary', 'A', 1), ('Mary', 'B', 1), ('Mary', 'B', 1), ('Mary', 'B', 1), ('Mary', 'B', 1), ('Mary', 'B', 1), ('Mary', 'B', 1), ('Mary', 'B', 1), ('Mary', 'C', 1), ('Mary', 'C', 1), ('Mary', 'C', 1), ('Mary', 'C', 1), ('Mary', 'C', 1), ('Mary', 'C', 1), ('Mary', 'C', 1), ('Mary', 'C', 1);
Bob A B C ------------------------------ joe A B C ------------------------------- John A B C ------------------------------ Mary A B C
回答2件
良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。