0
Xin giúp đỡ câu lệnh SELECT
SQL fiddle : http://sqlfiddle.com/#!9/5a3e95/2
Xin hướng dẫn hoàn thiện câu lệnh SELECT mình cần là: lấy username của bảng USERS và mỗi id của bảng POST chỉ lấy n rows mới nhất của bảng COMMENTS ? Xin cảm ơn rất nhiều !
2 ANSWERS
+1
Câu hỏi ko rõ nghĩa lắm, nên có gì bạn tự chỉnh lại nhé. Đây là query select 2 comment mới nhất của mỗi post
SELECT p.id,
p.content,
c.comment,
c.user_id,
c.date_created
FROM (
SELECT c.post_id,
c.comment,
c.date_created,
c.user_id,
COUNT(*) AS row_number
FROM comments c
INNER JOIN comments c2
ON c.post_id = c2.post_id
AND c.date_created <= c2.date_created
GROUP BY c.post_id,
c.date_created,
c.comment,
c.user_id
) c
INNER JOIN posts p
ON p.id = c.post_id
WHERE c.row_number <= 2
+1
Nếu cần thêm nội dung comment thì comments trong group thành 1 added fields array object dạng json string
SELECT posts.id as post_id, users.username as publisher_username, users.id as publisher_id,
SUBSTRING_INDEX( GROUP_CONCAT(comments.id ORDER BY comments.date_created DESC), ',', 2) comment_ids
FROM posts
LEFT JOIN comments ON posts.id = comments.post_id
LEFT JOIN users ON users.id = posts.user_id
GROUP BY posts.id
Thực sự là muốn giúp nhưng mình đọc đi đọc lại câu hỏi vẫn chưa nắm được bạn đang muốn hỏi cái gì? (amen) Bạn có thể update câu hỏi theo mẫu dưới đây chẳng hạn? Mình nghĩ nhiều người muốn giúp nhưng đọc xong không hiểu nên mọi người không biết trả lời như nào =))
VD: Tôi muốn viết câu truy vấn lấy danh sách 10 người dùng và với mỗi người dùng trên sẽ lấy kèm n comment mới nhất? Dưới đây là DB mẫu của tôi: http://sqlfiddle.com/#!9/5a3e95/2
@huukimit Xin lỗi, lần sau mình sẽ hỏi cẩn thận hơn ! Ý của câu hỏi là: Mình muốn lấy 2 comments mới nhất của mỗi bài viết.