2016-08-28 43 views
1

私は2つのテーブルを持っています:マスターとクラス。マスターはstudentIDと社会保障番号(SSN)で学校に通ったすべての生徒のマスターリストです。優秀な学生に複数の学生IDが割り当てられていることが心配です。 SSNごとにstudentIDを数えたいと思います。することができます**カウント - 2つのテーブルからの出力に基づいて

+0

**レコードにあなたのwhere句述語を回す "機能の利用が有効ではありませんCOUNT":

select master.studentID, master.SSN, class.studentID, class.type from master, class where master.studentID = class.student.ID and class.type = 'Honors" and count(master.StudentID) > 1 

は、私は、次のエラーメッセージが表示されます'Where'節でフィルタリングされます。 **グループ**は 'Having'節でフィルタリングすることができます –

+0

あなたはどのRDBMSを使用しています –

答えて

0

ちょうどサブクエリ

select m.studentID, m.SSN, c.studentID, c.type, 
    (Select count(*) from master 
    Where SSN = m.SSN) ssnCount 
from master m join class c on c.studentID = m.studentID 
where c.type = 'Honors" 
    and (Select count(*) from master 
     where SSN = m.SSN) > 1 
+0

エラーメッセージはありませんが、これはすべての優等生を出力している可能性があります。 SSNごとにカウント列を追加するにはどうすればよいですか? – DJohnson1990

+0

したがって、ssnCountを追加しました(これはSelect句と同じサブクエリです) –

1
select master.SSN 
from master 
join class on master.studentID = class.student.ID 
where class.type = 'Honors' 
group by master.SSN 
having count(distinct master.studentID) > 1 
+0

4つの列を選択していませんか?最低3つの有効な列 –

+0

はい、OPは重複している「studentID」が心配です。そのクエリが十分でない場合は、要求に応じて拡張できます。しかし、これは最も簡単な解決策です。 –

+0

'select/group by master.SSN'だと思います。「SSNごとにstudentIDを数える」 – Serg

関連する問題