Вывод самых комментируемых записей.

Тема в разделе "PHP", создана пользователем Istergul, 12 апр 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Istergul

    Istergul Создатель

    Регистр.:
    19 янв 2009
    Сообщения:
    17
    Симпатии:
    0
    Помогите решить проблему.
    В базе есть две таблицы: записи и комментарии. Необходимо вывести 10 самых комментируемых записей.
    В таблице с комментариями в каждой строке есть id записи, к какой крепится данный комментарий.

    Как вывести 10 самых комментируемых записей?
     
  2. -=Xardas=-

    -=Xardas=-

    Регистр.:
    17 сен 2008
    Сообщения:
    250
    Симпатии:
    58
    SELECT count(*) AS ssss, id_записи FROM таблица_с_коментами GROUP BY id_записи ORDER BY ssss DESC , id_записи LIMIT 0 , 10;
    отак поидее будет работать, должно вывести:
    кол-во коментов в записи | id_записи
     
  3. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    дампы таблиц в студию...
     
  4. Alternator

    Alternator

    Регистр.:
    23 мар 2009
    Сообщения:
    295
    Симпатии:
    145
    -=Xardas=- неправильно вы пишите
    count(*) для одной таблицы в таком виде будт показывать количество коментариев вообще
    Вот, мой вариант:
    Код:
    SELECT
    	`t1`.`id` `id`,
    	(SELECT COUNT(*) FROM `таблица_с_коментами` `t2` WHERE `t2`.`id_коментируемой_записи`=`t1`.`id`) `count_comments`
    FROM `таблица_с_записями` `t1`
    ORDER BY `count_comments` DESC
    LIMIT 10;
    
     
    Istergul нравится это.
  5. Istergul

    Istergul Создатель

    Регистр.:
    19 янв 2009
    Сообщения:
    17
    Симпатии:
    0
    Alternator, а можно, пожалуйста, уточнить, что в приведённом вами запросе есть `t1` и `t2`?
     
  6. -=Xardas=-

    -=Xardas=-

    Регистр.:
    17 сен 2008
    Сообщения:
    250
    Симпатии:
    58
    это "короткие названия" таблиц `таблица_с_записями` и `таблица_с_коментами` соответственно.
     
  7. Istergul

    Istergul Создатель

    Регистр.:
    19 янв 2009
    Сообщения:
    17
    Симпатии:
    0
    -=Xardas=-, спасибо, теперь понятно =)
     
  8. Alternator

    Alternator

    Регистр.:
    23 мар 2009
    Сообщения:
    295
    Симпатии:
    145
    `t1` и `t2` есть алиасы для таблиц `таблица_с_записями` и `таблица_с_коментами` соответсвенно.
    алиас - это более краткая запись для имени таблицы или поля, которую можно использовать в пределах запроса, где определены эти алиасы
    алиасы можно определить так:
    Код:
    `длиное_имя_таблицы` AS `t1`
    -- либо так:
    `длиное_имя_таблицы_2` `t2`
    -- теперь в запосе можно писать:
    `t2`.`id`
    -- вместо:
    `длиное_имя_таблицы_2`.`id`
    
    PS блин отвлекся во время набора этого поста, у на вопрос уже овтетили.
    Все же оставлю потому что здесь более полно расписано
     
    Istergul нравится это.
  9. Istergul

    Istergul Создатель

    Регистр.:
    19 янв 2009
    Сообщения:
    17
    Симпатии:
    0
    Alternator, Спасибо за разъяснение =) проблема уже решена =)
    Тему можно закрывать.
     
  10. MadWizard

    MadWizard Постоялец

    Регистр.:
    24 мар 2009
    Сообщения:
    145
    Симпатии:
    20
    Неверно, при использовании группировки будет посчитано количество записей по группе. Если нужен только id записи, то вариант -=Xardas=- предпочтительнее, потому что при выборке использует одну таблицу.
     
Статус темы:
Закрыта.