Bạn có thể thực hiện việc sửa đổi truy vấn của mình thành:
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
Nó cũng chọn các bài đăng của chính người dùng. Hy vọng điều này sẽ hữu ích.
Đã cập nhật:Đã thêm GROUP BY POSTS.POSTID
vì vậy các bản sao sẽ bị loại bỏ vì bạn chỉ tìm kiếm dữ liệu trong POSTS
bảng.
Khi bạn chạy truy vấn như truyền các giá trị- Ví dụ:đối với người dùng có id 1, truy vấn trông giống như sau:
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
Kết quả là:
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
Đây là những gì bạn nhận được khi chuyển các giá trị cho truy vấn chọn đúng cách. Các giá trị được chuyển đến SUBSCRIBERID
và AUTHORID
nên giống nhau. LEFT JOIN sẽ khắc phục sự cố của bạn.