Я пытаюсь запросить, чтобы получать сообщения текущего пользователя и сообщения людей, за которыми он следит. Как и большинство социальных сетей на своей домашней странице.
Я знаю, как запросить все текущие сообщения пользователя, но я изо всех сил стараюсь, чтобы пользователь получил следующие сообщения.
Я видел этот другой вопрос Mysql select query для получения текущего сообщения пользователя и последующего сообщения друга
Но ответ там не очень помогает мне …
Вот мой запрос:
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)