Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Consulta MYSQL - Obtenha as postagens do usuário atual e as postagens do usuário que ele está seguindo


Para obter todas as postagens de um determinado usuário (id=145) e todos os usuários que seguem as postagens, juntamente com os detalhes do usuário para cada postagem, reescreveria a consulta para usar union em vez do ou, simplificando assim a lógica. A 1ª seleção obtém as postagens do usuário em questão, a 2ª obtém as postagens dos usuários que está seguindo:
(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

Suposições:

  1. O campo Activity.id representa o usuário, que segue o outro usuário. Caso contrário, você precisa alterar o nome do campo para o apropriado.

  2. Inventou o campo userid da tabela Posts representando o usuário que postou o post. Pls usa o nome de campo correto em seu lugar.