sql >> Database teknologi >  >> RDS >> Mysql

Viser abonnentindlæg og brugers egne indlæg

Du kan gøre det ved at ændre din forespørgsel til :

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 

Det vælger også brugerens egne indlæg. Håber dette ville hjælpe.

Opdateret :Tilføjet GROUP BY POSTS.POSTID så dubletter fjernes, da du kun leder efter data i POSTS tabel.

Når du kører forespørgsel som at sende værdier - f.eks. for brugere med id 1 ser forespørgslen sådan ud:

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

Resultaterne er:

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

Dette er, hvad du får, når du sender værdier til den valgte forespørgsel korrekt. Værdierne videregivet til SUBSCRIBERID og AUTHORID skal være den samme. LEFT JOIN ville løse dit problem.




  1. vælg sidste besked i samtalen for hver samtale i mysql

  2. Sådan indsætter du data fra en kolonne i en anden tabel

  3. Mysql PHP Cron til opdatering af brugerstatistik

  4. SQL:slet alle data fra alle tilgængelige tabeller