2010-11-27 5 views
3

이 쿼리를 사용하여 포럼 게시판 및 모든 하위 포럼을 인쇄하고 있습니다. 예상되는 것처럼, 해당 포럼에 속한 모든 스레드의 모든 게시물이 표시됩니다. 내가 원하는 것은 각 스레드의 첫 번째 게시물 만 포럼 제목과 함께 표시됩니다.INNER JOIN이있는 두 번째 테이블의 MySQL LIMIT 1

검색어 :

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) 답변이없는 경우 두 번째 테이블에서 게시물 번호 필드를 사용하면 어떻게 할 수 있습니까? 예를 들어 스레드의 첫 번째 게시물에는 숫자 1, 두 번째 게시물에는 숫자 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

거의 완벽하게! 그러나 나는 원래의 쿼리에 그 방법론을 통합하는 방법을 보여줄만큼 충분히 친절하십니까? 제발 :-) – Bojangles

+0

@ JamWaffles : edited – thejh

+0

대단히 고마워,하지만이 작동하지 않습니다. 제가 OP에서 말했던 것처럼 데이타베이스에서 게시물 번호 필드를 사용할 것입니다. 시간을 낭비해서 죄송합니다. 나는 이것을 정정 할 것이지만 정답으로하지는 않을 것입니다. 그것은 단지 나를 위해 일하기를 거부하기는하지만 좋은 것입니다. – Bojangles

관련 문제