2010-11-27 27 views
3

このクエリを使用して、フォーラムボードとすべてのサブフォーラムを表示しています。予期されるように、そのフォーラムに属するすべてのスレッドのすべての投稿が表示されます。私は、各スレッドの最初の投稿のみがフォーラムのタイトルとともに表示されることを望みます。MySQL LIMIT 1(INNER JOINを使用した2番目のテーブル)

問合せ:

SELECT tf_threads.*, tf_posts.* 
    FROM tf_threads INNER JOIN tf_posts 
    ON tf_threads.thread_id=tf_posts.thread_id 
     AND tf_threads.parent_id=54 ORDER BY tf_posts.date ASC

parent_idフィールドは、実際のクエリで変数を与えられますのでご注意ください。

So.私が理にかなっていれば、どのスレッドが各スレッドから最初の投稿のみを選択するように書くのか、誰でも助けてくれますか?

単純な(ish)回答がない場合、2番目のテーブルで投稿番号フィールドを使用した場合、私はどのように対処できますか?たとえば、スレッドの最初の投稿は数字1、2番目の投稿は数字2です。私がこのメソッドを使用すると、カウント番号フィールドが1の投稿を選択するのは明らかです。元のクエリをAND post_number=1で展開するだけでよいのでしょうか?読書のための

おかげで、

ジェームズ

答えて

2

このような何か?

http://murrayhopkins.wordpress.com/2008/10/28/mysql-left-join-on-last-or-first-record-in-the-right-table/

編集:が、私はそれがこのようなものであることを持っていると思うが、私はまた、SQLの専門家ではない:

SELECT tf_threads.*, tf_posts_tmp.* 
FROM tf_threads 
LEFT JOIN (SELECT p1.* 
      FROM tf_posts as p1 
      LEFT JOIN tf_posts AS p2 
      ON p1.postid = p2.postid AND p1.date < p2.date) as tf_posts_tmp 
ON (tf_threads.thread_id=tf_posts_tmp.thread_id) 
+0

ほぼ完璧!私は本当のMySQLの問題ではありませんが、元のクエリにそのメソドロジを組み込む方法を教えてくれますか?してください:-) – Bojangles

+0

@JamWaffles:編集 – thejh

+0

あなたの助けをありがとうが、これは動作しません。私は私のOPで言ったように、データベースのポスト番号フィールドを使用するつもりです。あなたの時間を無駄にして申し訳ありません。私はこれをマークアップするつもりですが、正しい答えとしてではありません - それは単に私のために働くことを拒否しています。 – Bojangles

関連する問題