このディレクトリの索引
http://pc11.2ch.net/test/read.cgi/db/1274791771/39
#  
#  maindata 
#  ----------------------------- 
#  main_id | main_name | junle 
#  ----------------------------- 
#  1000001 | aaaaaaaaa | 1 
#  1000002 | bbbbbbbbb | 2 
#  1000003 | ccccccccc | 1 
#  1000004 | ddddddddd | 3 
#  1000005 | eeeeeeeee | 1 
#   
#  itemdata 
#  -------------------- 
#  item_id | item_name 
#  -------------------- 
#  9000001 | AAAAAAAAA 
#  9000002 | BBBBBBBBB 
#  9000003 | CCCCCCCCC 
#  9000004 | DDDDDDDDD 
#  9000005 | EEEEEEEEE 
#   
#  itemlist 
#  ------------------ 
#  main_id | item_id 
#  ------------------ 
#  1000001 | 9000001 
#  1000001 | 9000004 
#  1000002 | 9000002 
#  1000002 | 9000005 
#  1000004 | 9000002 
#  1000004 | 9000004 
#  1000004 | 9000005 
#   
#  という3つのテーブルがある場合に、maindata.junle='1'を条件に 
#  main_id | main_name | itemlists 
#  ---------------------------------------------------- 
#  1000001 | aaaaaaaaa | AAAAAAAAA DDDDDDDDD 
#  1000003 | ccccccccc |  
#  1000004 | eeeeeeeee | BBBBBBBBB DDDDDDDDD EEEEEEEEE 
#  ---------------------------------------------------- 
#  ※itemlistsは空白で連結 
#   
#  という結果を求めたいと思います。 
#  サブクエリを利用して一度に求めることは可能でしょうか? 
#  それとも、アプリケーション側でループの際に都度itemlistsを生成する必要がありますでしょうか? 
#   

'main_id | main_name | itemlists'(_main_id,_main_name,_itemlists) :-
        findsetof([_main_id,_main_name],(
                        _junle='1',
                        maindata(_main_id,_main_name,_junle)),
                  L),
        member([_main_id,_main_name],L),
        findall(_item_name,(
                        itemlist(_main_id,_item_id),
                        itemdata(_item_id,_item_name)),
                _itemlists_1),
        concat_atom(_itemlists_1,' ',_itemlists).