現在のユーザーの投稿と彼がフォローしている人の投稿を取得しようとしています。ほとんどのソーシャルネットワークのように、彼らのホームページにあります。MYSQLクエリ - 現在のユーザーの投稿と彼の投稿に続いているユーザーを取得します
私はすべての現在のユーザーの投稿を照会する方法を知っていますが、私は彼が自分の投稿をフォローしていることを苦労しています。
私は、この他の質問Mysql select query for getting current user post and followed friend post
を見たが、答えは私を助け実際にそこではありません...
ここだが、これまで私のクエリです:
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」は、現在のユーザー
になります!
が
修正
(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)
まあ、その答えは間違っているようです。 'T.postID = '$ uid' //現在のログインしているユーザのIDを保持します。 - > postIDユーザのIDではなく、投稿のIDです。あなたは同じ問題を抱えています:P.idは現在のユーザーとは何の関係もありません – Shadow
@Shadowああそうですかu.id = 145ですか? –
うん、それは正しい。いいスポット! – Shadow