天使と悪魔選手権

お世話になります。

ここ数日、外部結合とカウントを組み合わせたSQL
が思うようにかけず大変悩んでいます。
学校・クラス・生徒テーブルをJOINして、
合否判定数を求めたいのですが、
期待する結果になりません。どなたか助けて下さい><


ポスグレ+PHPです。
事情によりプログラム側でカウントできないので、
SQLで一気に取得しなければならないのがネックです。
以下3テーブルと期待する結果テーブルです。

/////////////////////////////////////////////////
学校テーブル
--------------
ID   学校名
--------------
1   あああ
2   いいい
--------------


クラステーブル
----------------------------
ID   学校ID   クラス名
----------------------------
1     1     6-1組
2     1     6-2組
3     2     5-1組
----------------------------


生徒テーブル
----------------------------------------------------
ID   学校ID   クラスID   生徒名   合格判定
----------------------------------------------------
1     1      1     AAAAAA    TRUE
2     1      1     BBBBBB    FALSE
3     1      2     CCCCCC    TRUE
----------------------------------------------------


期待する結果
----------------------------------------
ID   学校名   受験数   合格数
----------------------------------------
1    あああ    3     2
2    いいい    0     0
----------------------------------------
/////////////////////////////////////////////////
どなたか助けてやってくださいm(_ _)m

A 回答 (1件)

クラステーブルと結合する必要はないんじゃありませんか。



select g.id,g.学校名,count(s.id) as 受験数,
sum( case when s.合格判定=true then 1 else 0 end ) as 合格数
from
学校テーブル g left join 生徒テーブル s
on g.id = s.学校ID
group by g.id,g.学校名
order by g.id
    • good
    • 0
この回答へのお礼

nora1962さまありがとうございました^^
期待するデータが得られました!
週明けのお返事となり申し訳ありません。

nora1962さまのご教授により、
SQLの知識を深めることができました、
心より感謝致しますm(_ _)m

お礼日時:2008/05/26 12:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す


おすすめ情報