sql >> Base de Datos >  >> RDS >> Mysql

Consulta MYSQL:obtenga las publicaciones del usuario actual y las publicaciones del usuario que está siguiendo

Para obtener todas las publicaciones de un usuario determinado (id =145) y todos los usuarios a los que sigue, junto con los detalles del usuario para cada publicación, reescribiría la consulta para usar union en lugar de la o, simplificando así la lógica. La primera selección obtiene las publicaciones del usuario dado, la segunda obtiene las publicaciones de los usuarios que está siguiendo:

(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

Suposiciones:

  1. El campo Activity.id representa al usuario, que sigue al otro usuario. De lo contrario, debe cambiar el nombre del campo por el apropiado.

  2. Inventó el campo de ID de usuario de la tabla Publicaciones que representa al usuario que publicó la publicación. Utilice el nombre de campo correcto en su lugar.