1

私は現在、次の問題で立ち往生しています:私は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
4

1 に答える 1