-2

2 番目のテーブルの各クラスに登録されている学生の数に基づいて、テーブルのデータを表示しようとしています。元:

表1:

ClassID:  SLN:   Capacity:
1         ABCD       4
2         EFGH       20
3         IJKL       25
4         MNOP       20
5         QRST       25 
6         UVWX       25

表 2:

StudentID:   Class:    
1             ABCD  
3             DCAB   
2             ABCD  
4             ABCD  
5             ABCD
6             EFGH

したがって、私が望む出力は次のとおりです。

ClassID:  SLN:   Capacity:
2         EFGH       20
3         IJKL       25
4         MNOP       20
5         QRST       25
6         UVWX       25

したがって、クラスは一方のテーブルに表示できますが、もう一方のテーブルには表示できません。テーブル 1 にないテーブル 2 のクラスは必要ありませんが、テーブル 2 ではなくテーブル 1 にあるクラスは必要です。また、満杯のクラスを表示したくありません。ありがとう

4

1 に答える 1

1

あなたの要件が正しいことを理解していれば、次を使用できると思います。

select t1.classid, t1.sln, t1.capacity
from table1 t1
where not exists (select 1  -- classes not in table2
                  from table2 t2
                  where t1.sln = t2.class)
  or t1.capacity > (select count(*)  -- classes where capacity not met
                    from table2 t2
                    where t1.sln = t2.class
                    group by class);

デモで SQL Fiddle を参照してください

于 2013-05-10T17:45:21.123 に答える