2

ここに問題があります...私はこれらのテーブルを持っています:

crs
title|semester
c++  |a
java |b
sql  |a

crsstu
regnum|title
11131 |java
11131 |c++
11132 |java
11132 |sql
11133 |c++
11133 |sql

私がやりたいのは、crsstu とテーブルから登録番号 (regnum) を選択することです。彼がまだ登録されていないコースを確認したいと思います。例: regnum 11131 を選択すると、SQL を返す必要があります。11132 を選択すると、c++ が返されます。

私はここまで来ました:

select a.title 
from crs as a,crsstu as b
where b.registrationnumber != 11133 
and a.title != (select title 
                from crsstu 
                where registrationnumber = 11133)

しかし、それは私に1242エラーを示しています(サブクエリは1行以上を返します).答えに近づいていることは知っていますが、これ以上何をすべきかわかりません.どんな答えでも役に立ちます.

4

3 に答える 3

3

に変更!=するだけNOT INです。IN と NOT IN を使用すると、アイテムのセットと比較できます。

select a.title 
from crs as a,crsstu as b
where b.registrationnumber != 11133 
and a.title NOT IN (select title 
                from crsstu 
                where registrationnumber = 11133)
于 2013-06-24T15:25:03.107 に答える
0

Join を使用する方が良いでしょう:

select title,regnum
from crs as a join crsstu as b
on a.title = b.title
where b.regnum != 11133
and a.title NOT IN (select title 
                from crsstu 
                where registrationnumber = 11133)
于 2013-06-24T16:12:29.940 に答える