0

教師とクラスの2つのテーブルがあります。説明は次のとおりです。

TEACHER
 ----------------
 TEACHER_ID
 FIRST_NAME
 LAST_NAME
 TYPE_CODE
 HOME_ROOM_NUM
 PHONE_NUM
 START_DATE
 HOME_STATE
 SCHOOL_ID

 Class
 --------------------
 CLASS_ID
 CLASS_NAME
 TEACHER_ID
 MAX_SEATS_AVAILABLE

特定の教師が教えるクラスの数を数える方法を見つけようとしています。これが私が試したことです: 1. リサ・ジョーンズはいくつのクラスを教えていますか?

SQL> select teacher.last_name, teacher.first_name, class.class_name as 
  2  from teacher, class
  3  where teacher.teacher_id = '2'
  4  AND class.teacher_id = '2';

ここに私が得る結果があります:

LAST_NAME         FIRST_NAME        CLASS_ID CLASS_NAME           TEACHER_ID  MAX_SEATS_AVAILABLE

----------------- ----------------- -------- -------------------- ----------- --------------------
JONES             LISA               2       Basic CALCULUS       2           10
JONES             LISA               9       Physics 230          2           20

教師の名前、ID、クラスの数だけが必要で、COUNT 関数でうまくいきません。

4

2 に答える 2

0

@GOAT CO ソリューションは正しいと思います。この squery は、JOIN ステートメントなしで機能しています。

select t.last_name, t.first_name, c.class_name, COUNT(DISTINCT c.CLASS_ID) as Classes_Count from teacher t, class c where t.teacher_id = c.teacher_id and t.teacher_id = 1 GROUP BY t.LAST_NAME, t.FIRST_NAME, t.TEACHER_ID;

EDIT : Teacher と Class テーブルのエイリアスを追加し、グループ ステートメントをスクリプトに追加します。試してみませんか?私はフィドルでのみテストしました。

ここにSQL FIDDLEリンクがあります。

EDIT2:その間、これとこのトピックORA-00937: not a single-group group functionをチェックして見つけました。しかし、このスクリプトはこの例外を受け取りません。ステートメントを変更した場合は、共有してください。

于 2013-09-23T08:00:34.083 に答える