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

Mostrando postagens de assinantes e postagens do próprio usuário


Você pode fazer isso modificando sua consulta para:
SELECT POSTS.*
FROM POSTS
LEFT JOIN SUBSCRIBERS
ON POSTS.AUTHORID = SUBSCRIBERS.PROFILEID
WHERE SUBSCRIBERS.SUBSCRIBERID = ? OR POSTS.AUTHORID = ?
GROUP BY POSTS.POSTID ORDER BY POSTS.POSTID DESC LIMIT 10 

Ele seleciona as próprias postagens do usuário também. Espero que isso ajude.

Atualizado:Adicionado GROUP BY POSTS.POSTID para que as duplicatas sejam removidas, pois você só procura dados em POSTS tabela.

Quando você executa a consulta como passar valores - por exemplo. para o usuário com id 1, a consulta se parece com:
SELECT POSTS.*
FROM POSTS
LEFT JOIN SUBSCRIBERS
ON POSTS.AUTHORID = SUBSCRIBERS.PROFILEID
WHERE SUBSCRIBERS.SUBSCRIBERID = 1 OR POSTS.AUTHORID = 1 GROUP BY POSTS.POSTID
ORDER BY POSTS.POSTID DESC LIMIT 10

Os resultados são:
PostID  AuthorID    PostDate    PostBody

3       1   2012-12-21  Oh Wait
2       3   2012-12-21  Bye Bye World
1       2   2012-12-20  Hello Word

Isso é o que você obtém quando passa valores para a consulta de seleção corretamente. Os valores passados ​​para SUBSCRIBERID e AUTHORID deveria ser o mesmo. O LEFT JOIN resolveria seu problema.