Задать вопрос
  • Как составить sql запрос для вывода Новость дня?

    @NeuraLink Автор вопроса
    Потратил ещё пару дней и есть ощущение, что лучше сделать невозможно, но если я не прав, предложите свой вариант, будет интересно взглянуть

    SELECT dt.id, dt.created, dt.title, dt.imageIds, dt.views, dt.likesCount
    FROM 
    (SELECT id, created, title, views, imageIds, (SELECT COUNT(*) FROM NewsLikes AS w1 WHERE dt1.id = w1.newsId) as likesCount FROM `News` dt1) dt
    LEFT JOIN (SELECT id, created, (SELECT COUNT(*) FROM `NewsLikes` AS `w1` WHERE b1.id = w1.newsId) as likesCount FROM `News` b1) b
    ON DATE_FORMAT(dt.created, '%Y%m%d') = DATE_FORMAT(b.created, '%Y%m%d') 
    AND (dt.likesCount < b.likesCount or (dt.likesCount = b.likesCount and dt.id < b.id))
    WHERE b.id is NULL
    ORDER BY dt.created DESC
    LIMIT 5 OFFSET 0;
    Ответ написан
    Комментировать