このディレクトリの索引
http://pc11.2ch.net/test/read.cgi/db/1252492296/212
#   
#  【質問テンプレ】 
#  ・DBMS名とバージョン:MySQL 5.1 
#  ・テーブルデータ 
#   
#  テーブルA 
#   
#  A_ID PRIMARY 
#  DATA1 
#  DATA2 
#  DATA3 
#  DATA4 
#   
#  テーブルB 
#   
#  B_ID PRIMARY AUTO_INCREMENT 
#  A_ID 
#  MESSAGE 
#  DATE 
#   
#  ・欲しい結果 
#  テーブルAとテーブルBを結合し、以下のように表示させたいです。 
#   
#  A.A_ID (B.A_IDを参照し、テーブルBにあるMESSAGEを反映させたい) 
#  A.DATA1 
#  A.DATA2 
#  A.DATA3 
#  A.DATA4 
#  B.MESSAGE (A.A_ID=B.B_IDと対応させ、NULLの場合はそのままNULLを表示、メッセージが存在する場合はDATEが最新の物のみ表示) 
#   
#  ・説明 
#  現在、LEFT JOINでテーブルAとテーブルBを結合した物を表示させ、 
#  テーブルBのMESSAGEにメッセージがあろうとNULLであろうと結合したテーブルの結果をすべて表示し、 
#  GROUP BY A.A_IDで、A.A_IDのエントリーは1つしか表示されないようにしているのですが、 
#  この状態だと、一番古いMESSAGEが表示されてしまいます。 

sql_212 :-
    テーブルA(A_ID,DATA1,DATA2,DATA3,DATA4),
    テーブルB(B_ID,A_ID,MESSAGE,DATE),
    write_formatted('A.%t\nA.%t\nA.%t\nA.%t\n',[DATA1,DATA2,DATA3,DATA4]),
    fail.
sql_212 :-
    findmax([DATE,MESSAGE],(テーブルA(A_ID),テーブルB(A_ID,_,MESSAGE,DATE)),[MaxDATE,MaxMESSAGE]),
    write_formatted('B.%t\n',[MaxMESSAME]),
    fail.
sql_212.