Asked May 29th, 2021 3:00 a.m. 123 0 2
  • 123 0 2
0

Xin giúp đỡ câu lệnh SELECT

Share
  • 123 0 2

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 !

May 30th, 2021 1:13 a.m.

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

0
| Reply
Share
Avatar Phong Nguyen @haiquacau
May 30th, 2021 1:57 a.m.

@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.

0
| Reply
Share

2 ANSWERS


Answered May 31st, 2021 2:44 a.m.
Accepted
+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
Share
Answered May 31st, 2021 3:31 a.m.
+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
Share
Viblo
Let's register a Viblo Account to get more interesting posts.