問題タブ [database-view]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - 3 つのテーブルから結果を返します。結果の数は、テーブル 1 の行数にテーブル 3 の行数を掛けた数に等しくなければなりません。
3 つのテーブルを持つ PostgreSQL データベースがあります。
user
: アプリケーションのユーザーのリスト。主キーはuser_id
.course
: ユーザーが登録できるコースのカタログ。主キーはcourse_id
.enrollment
: ユーザーのコースへの登録の記録。主キーはenrollment_id
.
テーブル間の関係:
テーブルには、
enrollment
null にできない 2 つの外部キーがあります。enrollment.user_id
参照user.user_id
。enrollment.course_id
参照course.course_id
。
user1
が に登録されている場合、 への参加に使用できるテーブルcourse1
内のレコードは 1 つだけである必要があります。enrollment
user1
course1
user1
がに登録されていない場合course1
、に結合するテーブルにはレコードが存在しません。enrollment
user1
course1
問題:
- 2 人のユーザーと 3 つのコースがある場合、次のような 6 行を返すデータベース ビューを作成する方法がわかりません。
いくつかのコンテキスト:
- データベースについては何も変更できません。
- 私はパフォーマンスについて心配していません。
進行中の作業:
私は率直にこれがうまくいくことを望んでいました:
enrollment
ユーザーが登録されていないコースのレコードがないため、このクエリは期待した結果を返しません。たとえば、結果は次のようになります。
これは私が期待するものではありません. テーブルが の 3 つのレコードを返すようにしたいのでuser1
, 誰がどのコースにも登録されていcourse_id
ませenrollment_id
んnull
. 同様に、 の 3 番目のレコードuser2
は に登録されていないため欠落していますcourse3
。これは私が望んでいるものではありません。
どうすればこの問題を解決できますか?