問題タブ [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.
テーブル間の関係:
テーブルには、
enrollmentnull にできない 2 つの外部キーがあります。enrollment.user_id参照user.user_id。enrollment.course_id参照course.course_id。
user1が に登録されている場合、 への参加に使用できるテーブルcourse1内のレコードは 1 つだけである必要があります。enrollmentuser1course1user1がに登録されていない場合course1、に結合するテーブルにはレコードが存在しません。enrollmentuser1course1
問題:
- 2 人のユーザーと 3 つのコースがある場合、次のような 6 行を返すデータベース ビューを作成する方法がわかりません。
いくつかのコンテキスト:
- データベースについては何も変更できません。
- 私はパフォーマンスについて心配していません。
進行中の作業:
私は率直にこれがうまくいくことを望んでいました:
enrollmentユーザーが登録されていないコースのレコードがないため、このクエリは期待した結果を返しません。たとえば、結果は次のようになります。
これは私が期待するものではありません. テーブルが の 3 つのレコードを返すようにしたいのでuser1, 誰がどのコースにも登録されていcourse_idませenrollment_idんnull. 同様に、 の 3 番目のレコードuser2は に登録されていないため欠落していますcourse3。これは私が望んでいるものではありません。
どうすればこの問題を解決できますか?