0

配列に約9000個のチューターIDのセットがあり、それらを次のような文字列に入れました:

(1,2, 3, 4,5,6,7,....9000,9001,9002)

次のクエリでそれらを使用できるように:

select count(student_assignment.assignment_id) as total_assignment from 
student_assignment, assigned_tutor_fk where  assignment_status = 'closed'
 and assigned_tutor_fk in (1,2, 3, 4,5,6,7,..100,101,103...9000,9001,9002)
 group by assigned tutor_fk.

各チューター(assigned_tutor_fk)に関連付けられている行の総数を計算したいのですが、割り当てを持たないチューター、つまりテーブルに割り当てレコードがないチューターは、割り当て数を0として表示したいのですが、 count と assigned_tutor_fk を返す私のクエリ 私のテーブル構造は次のとおりです。

    assignment_id | assigned_tutor_fk | assignment_date | student_id |
    |    1        |   2               |  22-01-2011     |  4         |
    |    2        |   3               |  14-03-2011     |  5         |

出力を次のようにしようとしています:

    |total_assignment | assigned_tutor_fk |
    |      5          | 4                 |
    |      2          | 7                 |
    |      0          | 8                 |

更新:私は自分自身を適切に表現できていないと思います.私はすでに別の基準でフィルタリングされたチューターのリストを持っています.これら2つのクエリを組み合わせるのは非常に複雑だったので、チューターIDのセットがあり、合計が必要です.チューターが割り当てレコードを持っていない場合はゼロとして表示されます。私は今何をすべきかわからないので、これについて私を助けてください

4

3 に答える 3

2
SELECT  t.id, COUNT(sa.assignment_id)
FROM    tutor t
LEFT JOIN
        student_assignement sa
ON      sa.assignment_tutor_fk = t.id
WHERE   t.id IN (1, 2, ..., 9002)
GROUP BY
        t.id
于 2013-01-15T12:22:23.170 に答える
0
SELECT 
  count(*) as total_assignment,
  assigned_tutor_fk  
FROM assignmentTable 
GROUP BY assigned_tutor_fk 
于 2013-01-15T12:18:45.913 に答える
0

家庭教師を文字列に入れないでください。テーブルからそれらを選択し、割り当てと FK テーブルで LEFT JOIN を実行します。すべてのテーブルを知らなくても、次のようになると思います。

select 
   t.tutorId,
   count(sa.assignment_id) as total_assignment
from 
   tutor t
LEFT JOIN
   assigned_tutor_fk fk
ON
   fk.assigned_tutor_fk = tutor.tutorId 
LEFT JOIN
   student_assignment sa
ON
  fk.assignment_id = sa.id
where  
   sa.assignment_status = 'closed' OR
   ISNULL(sa.assignment_status) -- if join fails.
group by 
   t.tutorId

Left Jointutor テーブルからすべての値を取得し、一致する場合は結合されたテーブルとマージします。そうでない場合は NULL が挿入されます。

于 2013-01-15T12:26:59.257 に答える