2016-01-21 3 views
0

У меня есть запрос, как этотMysql комплекс сортировки

SELECT videos.*, 
     (SELECT COUNT(comment_id) 
     FROM comments 
     WHERE comments.comments_video_id = videos.id) AS video_comments 
FROM videos 
ORDER BY video_comments DESC 

Теперь, если у меня есть 2 строки отсчетом же «videos_comments», как можно записать это так, что между этими 2 видео, тот, который был последним отображается комментарий (comments_date) в таблице комментариев первый

+0

Просто используйте comment_Date в ORDER BY с DESC, и вы также можете использовать comment_date в GROUP, чтобы вы получили только одну запись от comment_date –

+0

@GaganUpadhyay спасибо за быстрый ответ, любой шанс на пример кода, я довольно новичок в MySQL – fredmarks

ответ

0
SELECT videos.id, count(*) video_comments 
FROM videos LEFT JOIN comments 
ON comments.comments_video_id = videos.id 
GROUP BY videos.id 
ORDER BY video_comments DESC 
0
SELECT videos.id, 
     MAX(comments_date) as latest_comment, 
     COUNT(*) as video_comments 
FROM videos 
LEFT JOIN comments 
     ON comments.comments_video_id = videos.id 
GROUP BY videos.id 
ORDER BY 
     video_comments, 
     latest_comment  

Если вы хотите видео. *

SELECT videos.*, 
     video_comments, 
     latest_comment 
FROM videos 
JOIN (
     SELECT videos.id, 
       MAX(comments_date) as latest_comment, 
       COUNT(*) as video_comments 
     FROM videos 
     LEFT JOIN comments 
       ON comments.comments_video_id = videos.id 
     GROUP BY videos.id 

    ) T 
    ON videos.video_id = T.video_id 
ORDER BY 
     video_comments, 
     latest_comment 
Смежные вопросы