Ответы пользователя по тегу OpenCart
  • Как отсортировать поля в 1 таблице по значениям во 2?

    @viras777
    вариант 1 (с оконными функциями):
    select distinct p.blog_id, p.text, count(w.blog_id) over (partition by w.blog_id) from oc_blog p, oc_blog_comment w where w.blog_id = p.blog_id order by 3 desc limit 5;
    вариант 2 (с пред. подсчётом):
    select p.blog_id, p.text, t.count from oc_blog p, (select blog_id, count(blog_id) from oc_blog_comment group by blog_id ) t where p.blog_id=t.blog_id order by t.count desc limit 5;

    Первый вариант на моей выборке раза в 3 медленнее, в нём оконная функция выполняется для каждой строки.
    Второй вариант к тому же удобнее в будущем ограничивать, например, статьи не старше месяца, запихнуть во внутренний селект.

    ПыСы, лимит исключительно для удобства.
    Ответ написан
    4 комментария