PHP,PDO,MYSQL - 如何通过时间戳从两个不同的表中排序行?

时间:2017-04-19 10:52:29

标签: php mysql

我们有两个不同的表格,具有这样的结构:

dogs_table:

  • ID
  • dog_posts
  • dog_date

cats_table:

  • ID
  • cat_posts
  • cat_date

在浏览器中,我想在这样的时间线中显示来自狗和猫的帖子: timeline image
因此dog_posts应位于左侧,cat_posts位于右侧。 我已经花了几天时间来解决这个问题,而且我很清楚,如果我想以适当的方式显示帖子,我必须按照提交的日期将两个表格和显示帖子结合起来。

以下是一个例子:

'SELECT * FROM dogs_table, cats_table ORDER BY dogs_table.dog_date, cats_table.cat_date DESC';

当我试图在浏览器中显示值时,它们看起来非常混乱,崩溃了。 此外,我尝试使用几种UNION方式,但它也无法正常工作。我正在寻求正确查询的帮助,以及在表格和展示帖子提交日期之前将其合并的正确方法,如果它甚至可以这样做的话。

1 个答案:

答案 0 :(得分:0)

您可以使用 UNION 组合两个表,并使用 ORDER BY 子句对结果进行排序。

以下MySQL查询应该得到您想要实现的结果。

SELECT cat_posts as posts, cat_date as date, 'cats' as type from cats_table
UNION
SELECT dog_posts as posts, dog_date as date, 'dogs' as type from dogs_table
ORDER BY date desc

查询单个表时,您将为每个列(帖子和日期)使用别名,以便您可以在日期列上使用ORDER BY。

您还需要确定哪些行来自 dogs_table 表,哪些行来自 cats_table 表。

因此,您将添加名为 type 的虚拟列,并将其值设置为 dogs cats dogs_table cats_table