tldr; 以下の3つのうち、RAで書き込めないものはどれですか。
私たちの教授は私たちに3つのSQLクエリを書くように頼みました。それから彼は、それらのうちのどれが関係代数で書くことができなかったかを私たちに尋ねました。それらは次のとおりです。
次の3つのテーブルがあるとします。
Students (sID, sName); (Primary Key sID)
Courses (cID, cName); (Primary Key cID)
Enrolled (sID, cID, sectID, grade) (Primary Key sID, cID)
where foreign key (sID) references Students,
foreign key (cID) references Courses.
- 最大の学生IDを見つけます。
- COMP 4380のクラスリスト(〈sID、sName〉で構成される)を取得し、リスト内のレコードをsNameのアルファベット順に並べます。(彼は、これまでにコースを受講したことのあるすべての学生を望んでいます)。
- 各コースに登録されている学生の数を数えます(コースIDで識別されます)。
だから私たちは持っています:
- 整数の列で最大値を見つけることを含むクエリ。
- 結果をアルファベット順にソートするクエリ。
- 複数のグループを数えることを含むクエリ。
私はなんとか#1のRAステートメント(詳細はこちら)を書くことができたので、そうではないことを知っています。ただし、2と3についてはよくわかりません。RA操作でどのようにソートできますか?複数のグループをどのように数えることができますか?RAを拡張して集計関数としてカウントできるので、3が可能だと思います。
教授の最初の質問に答えるために私が思いついたSQLステートメントは次のとおりです。
SELECT max(sID)
FROM Students
SELECT sID, sName
FROM Enrolled INNER JOIN Students
WHERE cID="COMP 4380"
ORDER BY sName
SELECT count(sID), cID
FROM Enrolled
GROUP BY cID
RAで2と3を書くことができませんでした。