-1

次のような 3 つのテーブルがあります。

STUDENT(*snum: integer, sname: string, deptid: integer, slevel: string, age: integer)

CLASS(*cname: string, meets_at: date, room: string, fid: integer)

ENROLLED(*snum: integer, *cname: string)

すべての部屋 (CLASS 内の部屋) にクラスがある学生の学生名 (sname) を見つけようとしています。どうすればいいですか?

4

1 に答える 1

1
select sname from STUDENT
join ENROLLED on STUDENT.snum = ENROLLED.snum
join CLASS on ENROLLED.cname = CLASS.cname
group by sname
having count(distinct room) = (select count(distinct room) from CLASS)

SQLfiddle はこちら: http://sqlfiddle.com/#!2/71cba/1/0

ルーム名が一貫して入力されないという問題を回避するために、おそらく ROOMS を別のテーブルとして用意する必要があります。

于 2012-10-18T03:01:59.780 に答える