Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MYSQL查询-获取当前用户';s posts和用户';他';以下职位_Php_Mysql - Fatal编程技术网

Php MYSQL查询-获取当前用户';s posts和用户';他';以下职位

Php MYSQL查询-获取当前用户';s posts和用户';他';以下职位,php,mysql,Php,Mysql,我正在尝试查询以获取当前用户的帖子以及他正在跟踪的人的帖子。就像大多数社交网络在主页上做的那样 我知道如何查询当前用户的所有帖子,但我很难获得用户的帖子,他正在关注的帖子 我看到了另一个问题 但是答案并没有真正帮助我 以下是我目前的疑问: SELECT P.id, P.caption, P.date, U.id, U.fullname, U.username, F.IdOtherUser FROM USERS AS U INNER JOIN Activity AS F ON U.id = F.

我正在尝试查询以获取当前用户的帖子以及他正在跟踪的人的帖子。就像大多数社交网络在主页上做的那样

我知道如何查询当前用户的所有帖子,但我很难获得用户的帖子,他正在关注的帖子

我看到了另一个问题

但是答案并没有真正帮助我

以下是我目前的疑问:

SELECT P.id, 
P.caption,
P.date,
U.id,
U.fullname,
U.username,
F.IdOtherUser
FROM USERS AS U
INNER JOIN Activity AS F
ON U.id = F.id
INNER JOIN Posts AS P 
ON P.id = U.id OR P.id = F.IdOtherUser
WHERE P.id = 145
ORDER BY P.id DESC
145=当前用户

Activity.IdOtherUser=用户“145”正在跟踪

Activity.id=将是当前用户的“145”

如果有人能帮我解决这个问题,我将不胜感激

我似乎不能完全理解它,因为我对MYSQL还很陌生

修复

(SELECT P.id as postid, 
        P.caption,
        P.date,
        U.id as userid,
        U.fullname,
        U.username,
        coalesce(Activity.LikeCNT,0),
        Activity.CurrentUserLiked
        FROM USERS AS U
        INNER JOIN Posts AS P 
        ON P.id = U.id
        LEFT JOIN (SELECT COUNT(DISTINCT Activity.uuidPost) LikeCNT, Activity.uuidPost, Activity.id, sum(CASE WHEN Activity.id = 145 then 1 else 0 end) as CurrentUserLiked
        FROM Activity Activity
        WHERE type = 'like' 
        GROUP BY Activity.uuidPost) Activity
        ON Activity.uuidPost = P.uuid
        AND Activity.id = U.id
        WHERE U.id = 145)
UNION
(SELECT P.id, 
        P.caption,
        P.date,
        U.id,
        U.fullname,
        U.username,
        coalesce(Activity.LikeCNT,0),
        Activity.CurrentUserLiked
        FROM Activity AS A
        INNER JOIN USERS AS U 
        ON A.IdOtherUser=U.id
        INNER JOIN Posts AS P 
        ON P.id = U.id
        LEFT JOIN (SELECT COUNT(DISTINCT Activity.uuidPost) LikeCNT, Activity.uuidPost, Activity.id, sum(CASE WHEN Activity.id = 145 then 1 else 0 end) as CurrentUserLiked
    FROM Activity Activity
    WHERE type = 'like' 
    GROUP BY Activity.uuidPost) Activity
    ON Activity.uuidPost = P.uuid
    AND Activity.id = U.id
    WHERE A.id = 145)

为了获得给定用户(id=145)的所有帖子和它关注帖子的所有用户,以及每个帖子的用户详细信息,我将重写查询以使用
union
而不是or,从而简化逻辑。第1个选择获取给定用户的帖子,第2个选择获取以下用户的帖子:

(SELECT P.id as postid, 
       P.caption,
       P.date,
       U.id as userid,
       U.fullname,
       U.username,
FROM USERS AS U
INNER JOIN Posts AS P ON P.userid = U.id
WHERE U.id = 145)
UNION
(SELECT P.id, 
       P.caption,
       P.date,
       U.id,
       U.fullname,
       U.username,
FROM Activity AS A
INNER JOIN USERS AS U ON A.IdOtherUser=U.id
INNER JOIN Posts AS P ON P.userid = U.id
WHERE A.id = 145)
ORDER BY postid DESC
假设:

  • Activity.id字段表示跟随其他用户的用户。如果没有,则需要将字段名更改为适当的名称

  • 发明了Posts表的userid字段,表示发布帖子的用户。请在其位置使用正确的字段名


  • 为了获得给定用户(id=145)的所有帖子和它关注帖子的所有用户,以及每个帖子的用户详细信息,我将重写查询以使用
    union
    而不是or,从而简化逻辑。第1个选择获取给定用户的帖子,第2个选择获取以下用户的帖子:

    (SELECT P.id as postid, 
           P.caption,
           P.date,
           U.id as userid,
           U.fullname,
           U.username,
    FROM USERS AS U
    INNER JOIN Posts AS P ON P.userid = U.id
    WHERE U.id = 145)
    UNION
    (SELECT P.id, 
           P.caption,
           P.date,
           U.id,
           U.fullname,
           U.username,
    FROM Activity AS A
    INNER JOIN USERS AS U ON A.IdOtherUser=U.id
    INNER JOIN Posts AS P ON P.userid = U.id
    WHERE A.id = 145)
    ORDER BY postid DESC
    
    假设:

  • Activity.id字段表示跟随其他用户的用户。如果没有,则需要将字段名更改为适当的名称

  • 发明了Posts表的userid字段,表示发布帖子的用户。请在其位置使用正确的字段名



  • 嗯,这个答案似乎不正确
    T.postID='$uid'/$uid保存当前登录用户的id
    ->postID是帖子的id,而不是用户的id。你也有同样的问题:P.id与电流无关user@Shadow哦,那么它应该是u.id=145吗?是的,没错。好地方@我不知道为什么它返回94个结果,而它应该是25个?我希望你不要期望我是一个读心术的人,可以在不知道你的数据的情况下回答这个问题!嗯,这个答案似乎不正确
    T.postID='$uid'/$uid保存当前登录用户的id
    ->postID是帖子的id,而不是用户的id。你也有同样的问题:P.id与电流无关user@Shadow哦,那么它应该是u.id=145吗?是的,没错。好地方@我不知道为什么它返回94个结果,而它应该是25个?我希望你不要期望我是一个读心术的人,可以在不知道你的数据的情况下回答这个问题!好朋友。。别担心,我在它的位置使用了正确的字段名!嘿,我的天,我问你最后一件事。。。你能给我你对我最后一个问题的看法吗?我把它添加到我的问题中了?老实说,我真的不知道你希望得到什么类型的答案。只是它是好的,还是坏的,可能会在将来引起问题…可能是服务器增长的时候?它太长了吗?或者这不重要吗?很棒的朋友。。别担心,我在它的位置使用了正确的字段名!嘿,我的天,我问你最后一件事。。。你能给我你对我最后一个问题的看法吗?我把它添加到我的问题中了?老实说,我真的不知道你希望得到什么类型的答案。只是它是好的,还是坏的,可能会在将来引起问题…可能是服务器增长的时候?它太长了吗?或者这不重要吗?