Yêu cầu thg 5 29, 2021 3:00 SA 123 0 2
  • 123 0 2
0

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

Chia sẻ
  • 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 !

thg 5 30, 2021 1:13 SA

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

Avatar Phong Nguyen @haiquacau
thg 5 30, 2021 1:57 SA

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

2 CÂU TRẢ LỜI


Đã trả lời thg 5 31, 2021 2:44 SA
Đã được chấp nhận
+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
Chia sẻ
Đã trả lời thg 5 31, 2021 3:31 SA
+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
Chia sẻ
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí