データベース初心者です。
ヘルスケアマスタ、会員マスタと、ユーザーマスタ(ID情報を一元管理したもの)で結合させて、下記アウトプットビューにあるように、日付および個人データ(会員番号等)ごとに、ヘルスケアマスタと会員マスタのデータ(歩数、作業時間等)を出力させたいです。
アウトプットビューに出力する際の条件として、ヘルスケアマスタと会員マスタで一致する日付データが存在しなくても、ヘルスケアマスタと会員マスタから抽出してきたカラム部分についてはデータがない片側はnullでよいので出力させたく、ユーザーマスタから抽出してきたカラム部分については、nullではなく、対象のレコードに関わる個人データをかならず表示させるようにしたいです。
下記の表のようなイメージです。
ユーザーマスタカラム | ヘルスケアカラム | 会員カラム |
---|---|---|
ヘルスケアマスタ、会員カラムでどちらかが欠けているレコードがあっても、nullではなく個人データを出力 | データがなければnullでok | データがなければnullでok |
下記のSQL文のように、それぞれのマスタをfull outer joinで二重に結合させ、ヘルスケアか会員マスタのどちらかでデータがなくても出力させるようにOR文で条件指定しましたが、②のアウトプットビューにあるように、ユーザーマスタから抽出してきたカラム部分が nullになってしまうようです。
ヘルスケアか会員マスタのどちらかでデータがなくても、ユーザーマスタから抽出してきたカラム部分については、必ず出力させるようにするためには、下記SQL文をどのように修正が必要でしょうか?
ご存じの方いましたら、ご教示いただけると幸いです。
SELECT * FROM (("ヘルスケアマスタ" FULL OUTER JOIN "会員マスタ ON "ヘルスケアマスタ"."スマートウオッチ測定日" = "会員マスタ"."日") FULL OUTER JOIN "ユーザーマスタ" ON "ヘルスケアマスタ"."スマートウオッチID" = "ユーザーマスタ"."会員番号" OR "会員マスタ"."会員番号" = "ユーザーマスタ"."会員番号")
①正解アウトプット用ビュー
スマートウオッチID | 会員番号 | ユーザ名 | スマートウオッチ測定日 | 歩数 | 睡眠時間 | 作業日 | 作業時間 |
---|---|---|---|---|---|---|---|
5700000 | dummy0001 | 田中太郎 | 2022-12-06 | 10000 | 9.7 | null | null |
5700023 | dummy0002 | 佐藤一郎 | 2022-12-07 | 7000 | 5.6 | null | null |
5700056 | dummy0003 | 山田花子 | 2022-12-08 | 1200 | 7.0 | null | null |
5700000 | dummy0001 | 田中太郎 | null | null | null | 2022-01-09 | 9.0 |
5700023 | dummy0002 | 佐藤一郎 | null | null | null | 2022-01-10 | 12.0 |
5700056 | dummy0003 | 山田花子 | null | null | null | 2022-01-11 | 11.0 |
5700000 | dummy0001 | 田中太郎 | 2022-01-12 | 15000 | 8.0 | 2022-01-12 | 8.0 |
②ユーザーマスタのカラムが nullになってしまう現在のアウトプット用ビュー
スマートウオッチID | 会員番号 | ユーザ名 | スマートウオッチ測定日 | 歩数 | 睡眠時間 | 作業日 | 作業時間 |
---|---|---|---|---|---|---|---|
5700000 | null | 田中太郎 | 2022-12-06 | 10000 | 9.7 | null | null |
5700023 | null | 佐藤一郎 | 2022-12-07 | 7000 | 5.6 | null | null |
5700056 | null | 山田花子 | 2022-12-08 | 1200 | 7.0 | null | null |
null | null | null | null | null | null | 2022-01-09 | 9.0 |
null | null | null | null | null | null | 2022-01-10 | 12.0 |
null | null | null | null | null | null | 2022-01-11 | 11.0 |
5700000 | dummy0001 | 田中太郎 | 2022-01-12 | 15000 | 8.0 | 2022-01-12 | 8.0 |
----------------------------------------------------
↓下記はマスタ一覧です。
ヘルスケアマスタ
スマートウオッチ測定日 | スマートウオッチID | 歩数 | 睡眠時間 |
---|---|---|---|
2022-12-06 | 5700000 | 10000 | 9.7 |
2022-12-07 | 5700023 | 7000 | 5.6 |
2022-12-08 | 5700056 | 1200 | 7.0 |
2022-01-12 | 5700000 | 15000 | 8.0 |
会員マスタ
作業日 | 会員番号 | 作業時間 |
---|---|---|
2022-01-09 | dummy0001 | 9.0 |
2022-01-10 | dummy0002 | 12.0 |
2022-01-11 | dummy0003 | 11.0 |
2022-01-12 | dummy0001 | 8.0 |
ユーザマスタ
スマートウオッチID | 会員番号 | ユーザ名 |
---|---|---|
5700000 | dummy0001 | 田中太郎 |
5700023 | dummy0002 | 佐藤一郎 |
5700056 | dummy0003 | 山田花子 |

回答2件
あなたの回答
tips
プレビュー