Php 一次从数据库查询两个表?

Php 一次从数据库查询两个表?,php,sql,join,Php,Sql,Join,我试图同时查询两个表,以在“新闻提要”中显示成员的活动 因此,我有两个问题,但我想将它们结合起来: $status_query = mysql_query("SELECT * FROM member_status_updates WHERE member_id = '1'"): and $topic_query = mysql_query("SELECT * FROM topics WHERE author_id = '1'"); 如何组合这两个查询,以便在插入时按顺序显示它们?如果一个

我试图同时查询两个表,以在“新闻提要”中显示成员的活动

因此,我有两个问题,但我想将它们结合起来:

$status_query = mysql_query("SELECT * FROM member_status_updates WHERE member_id = '1'"):
   and
$topic_query = mysql_query("SELECT * FROM topics WHERE author_id = '1'");
如何组合这两个查询,以便在插入时按顺序显示它们?如果一个状态是在5秒钟前发布的,而一个主题是在昨天发布的,那么状态更新应该在顶部。为此,我想我需要将这两个查询结合起来

但我的另一个担忧是,如果我按照
ID DESC
对它们进行排序,会不会弄乱显示?例如:如果在1秒前发布的状态更新ID为50,而昨天发布的主题ID为100,那么即使状态更新在1秒前发布,该主题是否会首先显示,因为ID大于状态更新的ID?如果是这样的话,那么我想知道如何按日期对它们进行排序,我为每个记录都有一个时间戳


非常感谢您的帮助。

一种解决方案是使用Union All查询:

Select 'member' As Source, <some timestamp col> As InsertedDate, ...
From member_status_updates
Where member_id = 1
Union All
Select 'topics', <some timestamp col>, ...
From topics
Where author_id = '1'
Order By InsertedDate Desc

应该返回哪些列,每个表中的哪一列表示要筛选插入时间的时间?topics.author\u id是否表示与memberstatus\u status\u updates.member\u id相同?应该为更新的“status\u content”返回的collumns,以及为主题返回的“title”。另外-是的,它将显示相同的用户ID(@第二条注释)。是应该始终从主题表中获取一行,还是应该始终从members\u status\u updates表中获取一行,或者可以是空的?正如所写的,此解决方案没有考虑@Dan的订单要求。谢谢,我已经运行了查询。但我对如何实际显示结果感到困惑。我正在使用while(),但它似乎没有显示给数据库中的任何信息。当我运行查询时,完整的数组是这样的:数组([0]=>status\u member\u id[Source]=>status\u member\u id[1]=>status\u date[InsertedDate]=>status\u date)@Dan-当您直接对数据库(而不是通过界面)运行查询时,会得到什么结果?如果运行一个Select语句而不是另一个语句,会怎么样?Union All实际上是将两个查询结果叠加在一起,因此如果没有结果,则两个单独的查询都不会返回任何结果。@Thomas,对不起,我应该指定。它实际上返回了590个条目。我在while()循环中显示了590次,但是数据库中的数据没有显示。@Dan-我添加了另一个变量。但是,您应该始终从主题中获取一行,还是始终从成员状态更新中获取一行?这将影响联接的性质。
Select T.title, M.status_content
From topics As T
    Left Join member_status_updates As M
        On M.member_id = T.author_id
            And M.SomeTimestampCol =    (
                                        Select Max( M1.SomeTimestampCol )
                                        From member_status_updates As M1
                                        Where M1.member_id = 1
                                        )
Where T.author_id = 1
    And T.SomeTimestampCol =    (
                                Select Max( T1.SomeTimestampCol )
                                From topics As T1
                                Where T1.author_id = 1
                                )