Php 合并两个表,按日期排序,带限制

Php 合并两个表,按日期排序,带限制,php,mysql,sql,mysqli,Php,Mysql,Sql,Mysqli,我有两张表帖子和回复。我目前所做的只是在我的网站主页上显示25篇最新的帖子,并进行以下查询: SELECT p.post_id , p.user_id , p.message , p.datetime , u.username FROM posts p LEFT JOIN users u ON p.user_id = u.user_id ORDER BY p.datetime DESC LIMIT 25 我想做

我有两张表
帖子
回复
。我目前所做的只是在我的网站主页上显示25篇最新的
帖子,并进行以下查询:

SELECT p.post_id
     , p.user_id
     , p.message
     , p.datetime
     , u.username 
  FROM posts p 
  LEFT 
  JOIN users u 
    ON p.user_id = u.user_id 
 ORDER 
    BY p.datetime DESC
 LIMIT 25
我想做的是获得25篇最新的
帖子
回复
(合并)。例如,我想在主页上输出:

User A posted "blah blah blah" on Feb. 3, 2014.
User B posted "yeah yeah yeah" on Feb. 2, 2014.
User A replied "this is a reply" on Feb. 2, 2014.
User C posted "some post" on Feb. 1, 2014.
我该怎么做呢?

您可以使用,然后限制结果。我假设您的答复表具有相同的结构:

SELECT results.*, u.username FROM (
    SELECT p.post_id, p.user_id, p.message, p.datetime FROM posts p
    UNION    
    SELECT r.post_id, r.user_id, r.message, r.datetime FROM replies r 
) as results  
LEFT JOIN users u ON results.user_id = u.user_id
ORDER BY results.datetime DESC LIMIT 25

若回复表的结构相同,那个么可以像下面这样使用union

SELECT p.post_id, p.user_id, p.message, p.datetime AS postTime, u.username FROM posts p LEFT JOIN users u ON p.user_id = u.user_id 
UNION
SELECT r.reply_id, r.user_id, r.message, r.datetime AS postTime, u.username FROM replies r LEFT JOIN users u ON r.user_id = u.user_id
ORDER BY postTime DESC LIMIT 25

帖子和回复是否以某种方式相互关联。我想不会,否则我肯定你会提到的!