あなたのIDが自動番号が付けられていると仮定すると、あなたはこのように行うだろう:
SELECT pe.person_id,
pe.name,
al.activity_name,
al.activity_date
FROM person pe
LEFT JOIN (SELECT p.person_id,
Max(a.activity_id) activity_id
FROM person p
LEFT JOIN activity_log a
ON (p.person_id = a.person_id)
GROUP BY p.person_id) AS LAST
ON pe.person_id = LAST.person_id
LEFT JOIN activity_log al
ON LAST.activity_id = al.activity_id
をただし、ユーザーが新しいものよりも後の過去の活動に入るかもしれないが、これは失敗し、あなたはこのように行かなければならないだろう:
SELECT LAST.person_id,
LAST.name,
LAST.activity_date,
(SELECT activity_name
FROM activity_log al
WHERE al.person_id = LAST.person_id
AND al.activity_date = LAST.activity_date) activity_name
FROM (SELECT p.person_id,
Max(p.name) AS name,
Max(a.activity_date) activity_date
FROM person p
LEFT JOIN activity_log a
ON (p.person_id = a.person_id)
GROUP BY p.person_id) AS LAST
しかし、これはまだ問題があります:MySQLはサブクエリでLIMIT
を許可していませんので、同じ人が同じactivity_date
を持つ2つの活動を持っており、それが最新の日付だ場合、クエリは失敗します。
。私は編集します。 – user583576
または外活動で従業員を示さなければならない
– NickHeidkeはまだ最高の日付を持つ1行を返します – user583576