2017-02-08 9 views
0

でクエリを結合に明確な結果を得る:トラブル私は以下のように2つのテーブル持っているmysqlの

Mail_Thread 
------------- 
id, 
thread_name, 
created 

を、

Mail 
---- 
id, 
thread_id (FK for Mail_thread), 
to, 
subject, 
message, 
created 

ここに1つのスレッドが複数のメールが含まれています。ですから、私は結果が別個のスレッドであり、結合を使用してそのスレッドの最後のメッセージであることを望みます。だから可能性はありますか?

答えて

2

これを達成するには、MySQLで一連の結合を行います。最初の結合はスレッドをメールメッセージに接続し、2回目の結合はそれらのメールメッセージを各スレッドの最新のものだけに制限します。

SELECT t1.thread_name, 
     t2.message 
FROM Mail_Thread t1 
INNER JOIN Mail t2 
    ON t1.id = t2.thread_id 
INNER JOIN 
(
    SELECT thread_id, MAX(created) AS max_created  -- this subquery identifies 
    FROM Mail           -- the most recent message 
    GROUP BY thread_id        -- for each thread 
) t3 
    ON t2.thread_id = t3.thread_id AND 
     t2.created = t3.max_created 
+0

[本当に役立つだろうこのコードスニペットは、*どの*と*理由*これで問題が解決の説明を含め、問題を解決するかもしれないが...あなたは –

0
select mt.id,mt.thread_name,mt.created 
from mail_thread mt 
inner join mail m on mt.id =m.thread_id 
group by m.thread_id 
order by mt.created desc 
+0

..私の一日を保存ありがとうございました(//meta.stackexchange.com/q/114762)あなたの投稿の品質を向上させる。あなたが今質問している人だけでなく、将来読者のための質問に答えていることを忘れないでください!説明を追加するためにあなたの答えを[編集]し、どんな制限と前提が適用されるかを示してください。 –

関連する問題