このディレクトリの索引
http://pc11.2ch.net/test/read.cgi/db/1252492296/688
# <生徒テーブル>
# 生徒ID, 生徒名称, クラスID, 好きな教科ID,
# 1, 鈴木, A, 1
# 2, 田中, B, 1
# 3, 佐藤, c, 2
#
# <教科テーブル>
# 教科ID, 教科名称
# 1, 国語
# 2, 数学
# 3, 理化
#
# <クラステーブル>
# クラスID, クラス名称
# a, Aクラス
# b, Bクラス
# c, Cクラス
#
# 上記2つのテーブルから、
# 各教科でクラス毎に何人が好きな教科としているか以下のような形で取得します。
#
# 教科, Aクラス内での人数, B〜, C〜, …
# 国語, 1, 1, 0, …
# 数学, 0, 0, 1, …
# 理化, 0, 0, 0, …
# 

各教科でクラス毎に何人が好きな教科としているか(_好きな教科の人数一覧) :-
   findall(_クラスID,クラステーブル(_クラスID,_),_クラスIDならび),
   findall(_教科ID,教科テーブル(_教科ID,_),_教科IDならび),
   findall([_教科ID_2,_クラスID_2,_人数],
          ( member(_教科ID_2,_教科IDならび),
           member(_クラスID_2,_クラスIDならび),
           count(生徒テーブル(_,_,_クラスID_2,_教科ID_2),_人数)),
       _好きな教科表一覧).