Mysql 在同一SQL查询中对不同表中的不同数据进行排序

Mysql 在同一SQL查询中对不同表中的不同数据进行排序,mysql,pagination,Mysql,Pagination,我是网络开发新手,在第一个学校项目中工作。 我试图制作一个活动页面,显示用户在社交网络中最近的所有活动。 我需要从不同的表中获取数据,如帖子,评论,喜欢,消息。我需要按日期订购,并使用分页。 我想我可以使用四个不同的语句,然后合并生成的数组,但是我不能因为分页而把所有的数据都扔掉,所以我需要LIMIT和OFFSET语句。 我需要的SQL语句如下所示: SELECT posts.stuff, comments.this, messages.that FROM posts, comments, me

我是网络开发新手,在第一个学校项目中工作。 我试图制作一个活动页面,显示用户在社交网络中最近的所有活动。 我需要从不同的表中获取数据,如
帖子
评论
喜欢
消息
。我需要按日期订购,并使用分页。 我想我可以使用四个不同的语句,然后合并生成的数组,但是我不能因为分页而把所有的数据都扔掉,所以我需要
LIMIT
OFFSET
语句。 我需要的SQL语句如下所示:

SELECT posts.stuff, comments.this, messages.that
FROM posts, comments, messages
ORDER BY ?????
LIMIT 10 OFFSET 0
SELECT action
FROM (

    SELECT stuff AS action  --I'll use action as the column name
        , actionDate        --assuming that this is the column name of the date
        FROM posts

    UNION ALL               --because UNION only removes duplicate

    SELECT this
        , actionDate
        FROM comments

    UNION ALL

    SELECT that
        , actionDate
        FROM messages
) AS activities
ORDER BY actionDate 
LIMIT 10                    --no need for OFFSET if it is zero
我如何按日期订购这些?如果所有表的日期都有一个名为
date
的列,这有帮助吗

使用MySQL、PHP和Bootstrap进行分页

谢谢:D

编辑

以下是我必须从中获取数据的表格:

[posts]
idPosts
title <--
description <--
date <--
`by` (FK) <--
category (FK) <--
"WHERE `by`= '$user_id'"

[comments]
idComments
comment <--
date <--
post (FK) <--
`by` (FK) <--
"WHERE `by` = '$user_id'"

[likes]
idLikes
date <--
post (FK) <--
`by` (FK) <--
"WHERE `by` = '$user_id'"

[messages]
idMessages
message <--
date <--
`by` (FK) <--
`to` (FK) <--
"WHERE `by` = '$user_id' OR to = '$user_id'"

this_is_a_foreign_key (FK)
and
i_need_this_column_out_of_the_query <--
[帖子]
idPosts
title使用,然后将其包装在子查询中,以便您可以按日期对它们进行排序

它看起来是这样的:

SELECT posts.stuff, comments.this, messages.that
FROM posts, comments, messages
ORDER BY ?????
LIMIT 10 OFFSET 0
SELECT action
FROM (

    SELECT stuff AS action  --I'll use action as the column name
        , actionDate        --assuming that this is the column name of the date
        FROM posts

    UNION ALL               --because UNION only removes duplicate

    SELECT this
        , actionDate
        FROM comments

    UNION ALL

    SELECT that
        , actionDate
        FROM messages
) AS activities
ORDER BY actionDate 
LIMIT 10                    --no need for OFFSET if it is zero

您好,谢谢您的回答:)有一个问题,
UNION ALL
要求所有
SELECT
语句具有相同数量的列,不幸的是,这不是我的情况。有没有其他方法可以使用
UNION
?我不断地提出新的想法,但总是不得不放弃它们XD ps:
LIMIT
OFFSET
将是variables@OmarElHajj是的,这三个表的列数应该相同,因为如果您不
UNION
它们,就不能
ORDER
它们。否则,请向我们展示3个表的设计,以及您试图实现的结果表。谢谢。你能给我们看一下你想要的结果数据吗?举个例子就好了。因为我不知道从表中排除一些列是否可以。我们还可以找到一种表示行来自哪个表的方法。顺便说一句,我不知道你所说的
是什么意思,我现在就明白了。我会尽量回答你的问题,这样你就不会对这两者之间可能存在的任何关系感兴趣了tables@Strawberry,你怎么说?我现在只是在阅读条目,这似乎是正确的方法。没有人知道如何获得这样的结果??:/