私は3つのテーブルを持っています:
member
member_id|member_name
training_member
training_id|member_id
training
training_id|team_id|training_date
各メンバーの team_id と training_date を使用して、最新のトレーニングを見つける必要があります。メンバーがトレーニングを受けていない場合は、team_id と training_date として NULL を返す必要があります。
次のように、さまざまな方法を試しました。
SELECT m.member_id, t.team_id, MAX(t.training_date)
FROM member m
JOIN training_member tm ON m.member_id = tm.member_id
JOIN training t ON tm.training_id = t.training_id
GROUP BY m.member_id
ORDER BY m.member_name, t.training_date DESC
ただし、正しい結果は得られません。MAX(training_date) に関連付けられたものではなく、リストされた最初の team_id が返されるようです。
何を変更する必要がありますか?
編集: sqlfiddle: http://sqlfiddle.com/#!2/a1ec1/1