前提
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件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。