私は現在、次の問題で立ち往生しています:私は2つのテーブルを持っています:
人 - uid - ファーストネーム - 苗字 郵便物 - uid (自動インクリメント) - to_person -> person.uid との 1:1 関係 - from_person -> person.uid との 1:1 の関係
uid=1 の人のすべてのメールを、mail.uid DESC でソートし、person.uid でグループ化して取得するにはどうすればよいですか? 私は次のことを試しました:
SELECT a.first_name,a.last_name,b.uid
FROM person as a, mail as b
WHERE
(b.to_user=a.uid OR b.from_user=a.uid) AND
(b.to_user=1 OR b.from_user=1) AND
a.uid!=1
GROUP BY a.uid
ORDER BY b.uid DESC
正確な人数は返ってきますが、最新のメールへの注文は機能しません。
誰でもこれを解決する方法を教えてもらえますか?
ありがとう、ドミニク
編集:
ここで、誰かが同じ質問をした場合に機能する私のソリューション:
SELECT a.uid,a.first_name, a.last_name, b.max, c.tstamp, c.to_user, c.from_user
FROM person a
INNER JOIN
(SELECT MAX(uid) max, to_user,from_user, IF(to_user=13,from_user,to_user) AS other_user, tstamp
FROM mail
WHERE (to_user=13 OR from_user=13) AND deleted=0 AND hidden=0
GROUP BY GREATEST(to_user,from_user), LEAST(to_user,from_user)
ORDER BY max DESC) AS b ON b.other_user=a.uid
INNER JOIN
tx_intranet_domain_model_mailentry as c ON c.uid=b.max
WHERE a.deleted=0 AND a.disable=0