http://phpbb-tw.net/phpbb/viewtopic.php?t=43002
~倉木麻衣~發布
剛在VMWare裡安裝Appser 2.4.5版來做測試底下的SQL
代碼: 選擇全部
SELECT t. * , p.poster_id, p.post_username AS last_poster_name, p.post_id, p.post_time, f.forum_name, f.forum_id, u.username AS last_poster, u.user_id AS last_poster_id, u2.username AS first_poster, u2.user_id AS first_poster_id, p2.post_username AS first_poster_name
FROM phpbb_topics t, phpbb_posts p
LEFT OUTER JOIN phpbb_posts p2 ON p2.post_id = t.topic_first_post_id
LEFT OUTER JOIN phpbb_forums f ON p.forum_id = f.forum_id
LEFT OUTER JOIN phpbb_users u ON p.poster_id = u.user_id
LEFT OUTER JOIN phpbb_users u2 ON u2.user_id = t.topic_poster
WHERE t.forum_id NOT
IN ( 65, 63, 85, 86 ) AND p.post_id = t.topic_last_post_id AND FROM_UNIXTIME( p.post_time, '%Y%m%d' ) - FROM_UNIXTIME( unix_timestamp( NOW( ) ) , '%Y%m%d' ) =0
ORDER BY t.topic_last_post_id DESC
LIMIT 0 , 10
SQL Error : 1054 Unknown column 't.topic_first_post_id' in 'on clause'
後來去MySQL官方查了一下5.0版的join語法, 發現在FROM後若有接二個以上的資料表, 大部份都有用()括號括起來
於是我就將上述的SQL改成
代碼: 選擇全部
SELECT t. * , p.poster_id, p.post_username AS last_poster_name, p.post_id, p.post_time, f.forum_name, f.forum_id, u.username AS last_poster, u.user_id AS last_poster_id, u2.username AS first_poster, u2.user_id AS first_poster_id, p2.post_username AS first_poster_name
FROM (phpbb_topics t, phpbb_posts p)
LEFT OUTER JOIN phpbb_posts p2 ON p2.post_id = t.topic_first_post_id
LEFT OUTER JOIN phpbb_forums f ON p.forum_id = f.forum_id
LEFT OUTER JOIN phpbb_users u ON p.poster_id = u.user_id
LEFT OUTER JOIN phpbb_users u2 ON u2.user_id = t.topic_poster
WHERE t.forum_id NOT
IN ( 65, 63, 85, 86 ) AND p.post_id = t.topic_last_post_id AND FROM_UNIXTIME( p.post_time, '%Y%m%d' ) - FROM_UNIXTIME( unix_timestamp( NOW( ) ) , '%Y%m%d' ) =0
ORDER BY t.topic_last_post_id DESC
LIMIT 0 , 10
建議您將recent.php裡的這句
代碼: 選擇全部
FROM ". TOPICS_TABLE ." t, ". POSTS_TABLE ." p
代碼: 選擇全部
FROM (". TOPICS_TABLE ." t, ". POSTS_TABLE ." p)