我们有两个不同的表格,具有这样的结构:
dogs_table:
cats_table:
在浏览器中,我想在这样的时间线中显示来自狗和猫的帖子:
timeline image
因此dog_posts应位于左侧,cat_posts位于右侧。
我已经花了几天时间来解决这个问题,而且我很清楚,如果我想以适当的方式显示帖子,我必须按照提交的日期将两个表格和显示帖子结合起来。
以下是一个例子:
'SELECT * FROM dogs_table, cats_table ORDER BY dogs_table.dog_date, cats_table.cat_date DESC';
当我试图在浏览器中显示值时,它们看起来非常混乱,崩溃了。 此外,我尝试使用几种UNION方式,但它也无法正常工作。我正在寻求正确查询的帮助,以及在表格和展示帖子提交日期之前将其合并的正确方法,如果它甚至可以这样做的话。
答案 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 分别是strong>和 cats_table 。