За последние 24 часа нас посетили 18063 программиста и 1655 роботов. Сейчас ищут 1234 программиста ...

выбор статей по максимальному количеству комментов

Тема в разделе "MySQL", создана пользователем snoggl, 10 авг 2009.

  1. snoggl

    snoggl Активный пользователь

    С нами с:
    18 ноя 2006
    Сообщения:
    41
    Симпатии:
    0
    Адрес:
    СПб
    Добрый день, начал составлять запрос - сначала думал все просто, а потом оказалось наоборот.

    Задача:
    есть две таблицы - статьи и комменты к этим статьям
    надо выбрать пять статей с максимальным количеством коммментов.

    У меня пока получается два решения: либо все статьи забирать с количеством комментов и сортировать их уже на php, либо в таблице статьи добавить новое поле - количество комментов.

    Как видите, решения не очень, может, кто подскажет правильный запрос?
     
  2. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    что-то вроде
    [sql]select news.*, count(comm_id) commnum
    from news
    join comments c ON c.comm_news_id=news.id
    group by news_id order by commnum [/sql]
     
  3. snoggl

    snoggl Активный пользователь

    С нами с:
    18 ноя 2006
    Сообщения:
    41
    Симпатии:
    0
    Адрес:
    СПб
    в запросе commnum - это что имеется ввиду? id-ник коммента?
     
  4. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    надо с таблице статей хранить поле с кол-вом каментов что б каженный раз не делать тяжеловестный JOIN с сортировкой
     
  5. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    дело как всегда в том, что тяжеловесные запросы, убиваются обычной избыточностью данных.
    =)
     
  6. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    +1