2010-11-17 107 views
0

我在查詢工作時遇到了一些麻煩。查詢問題

它應該做的是找到關於在論壇和它的子論壇最後一篇文章的信息。如果最後一篇文章是在該論壇中製作的,但是如果它是在子論壇中製作的,則它無法正常工作。

我有一種感覺,問題是圍繞着哪裏,但我不太清楚......

任何想法?

// Last Post Info 
$lastpost_sql = " 
    SELECT 
     forum_posts.post_id AS post_id, 
     forum_posts.post_date AS post_date, 
     forum_posts.thread_id AS thread_id, 
     temp.thread_title AS thread_title, 
     temp.forum_id AS forum_id, 
     users.user_id AS user_id, 
     users.user_firstname AS user_firstname, 
     users.user_lastname AS user_lastname 
    FROM (
     SELECT 
      forum_threads.thread_id, 
      forum_threads.thread_title, 
      forum_threads.forum_id 
     FROM 
      forums AS t1 
      LEFT JOIN 
       forums AS t2 ON t2.forum_parent = t1.forum_id 
      LEFT JOIN 
       forums AS t3 ON t3.forum_parent = t2.forum_id 
      INNER JOIN 
       forum_threads ON forum_threads.forum_id = t1.forum_id OR forum_threads.forum_id = t2.forum_id OR forum_threads.forum_id = t3.forum_id 
     WHERE 
      t1.forum_id = '$forum2[id]' 
     GROUP BY 
      forum_threads.thread_id 
    ) 
    AS 
     temp 
    INNER JOIN 
     forum_posts ON forum_posts.thread_id = temp.thread_id 
    INNER JOIN 
     users ON forum_posts.user_id = users.user_id 
    ORDER BY 
     forum_posts.post_id DESC LIMIT 1 
"; 
+0

這將是一個好主意,包括表結構和你期望的結果集的描述。 – Saul 2010-11-17 18:51:47

+0

對不起。以爲你可以根據查詢找出它。等一下。 – Cory 2010-11-17 18:52:24

回答

0

我想這是因爲你的子查詢。

試試這個:

SELECT 
    thread_id, 
    thread_title, 
    forum_id 
FROM 
    forum_threads 
WHERE 
    forum_id = '$forum2[id]' 
    OR forum_id = (SELECT forum_parent 
        FROM forums 
        WHERE forum_id = '$forum2[id]') 
    OR forum_id = (SELECT forum_parent 
        FROM forums 
        WHERE forum_id = (SELECT forum_parent 
             FROM forums 
             WHERE forum_id = '$forum2[id]')) 

那應該去兩個層面深入到分論壇,並抓住每一個線程。