単純なマシンフォーラムのWebフォーラムソフトウェアで、smf_membersとsmf_membersの2つのテーブルを参照しています。smf_membersの各行にはフィールドid_groupがあり、その値に関心があります:1,9,20,26,23,27(IN()句を使用)。一般的な目標は、上記のグループIDにあるsmf_membersテーブルのどの行で、90日間にsmf_messagesに行が入力されていないかを判別することです。smf_messagesのposter_timeはUNIXタイムスタンプです。私がこれまでに持っているのは:
SELECT
m.id_member,
m.id_group,
from_unixtime(max(ms.poster_time))
FROM
smf_members m
LEFT JOIN smf_messages ms
USING(id_member)
WHERE
max(ms.poster_time) < (NOW() < (86400 * 90)
GROUP BY
m.id_member
エラー1111で失敗します。where句でmax()を使用しているため、グループ関数の使用が無効です。参加結果を集計して、poster_timeフィールドに基づいて最新のエントリのみを参照するにはどうすればよいですか?