次のスキーマを持つ 2 つの MySql テーブルがあります
Courses(CNO:CHAR(10),CName:VARCHAR(50), DeptId:CHAR(3)): 各コースには CNO という一意の ID があります。 Register(RNO:CHAR(10), CNO:CHAR(10), Year:INTEGER, Sem:INTEGER, Grade:CHAR)
現在のタスクは、(r1, r2, d) を満たすすべてのタプルを見つけることです。このタプルでは、学生 ID r1 の学生が、学生 ID r2 の学生が ID<ID として完了したすべての DeptId を完了しています。 /ストロング>の学科のコース。
私の方法は、まず学生番号 r2 の学生がその学科で履修したすべての科目を見つけ、次に同様に学生番号 r1 の学生がその学科で履修したすべての科目を見つけて、それらが優秀であるかどうかを比較することです。同じ。しかし、これが正しいかどうか、あるいは 2 つの結果をどのように比較すればよいのかわかりません。
これは、特定の学部の中学番号 r2 の生徒が完了したすべてのコースを確認するために使用するコードです。
ここにコードとデータ DB Fiddle へのリンクがあります
これは私の方法です
######ステップ1:### 学生の一意の組み合わせを含む 2 つの列、student1 とstudent2 を含むテーブルを作成します。 ###例えば:### リーリー ######ステップ2:### 前のテーブルの異なる DeptId ごとに一意の DeptIdを追加するテーブルを作成します。 ###例えば:### リーリーステップ 3:
最後に、RNO1 と RNO2 が各 DeptId で同じコースをたどったタプルのみが保持されます。 以下は、rno1_rno2_deptid が上記のテーブルを参照する例です。リーリー上記は、RNO1 と RNO2 が同じシリーズの同じ CNO を持つ場合のみを選択しています。