Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод самых комментируемых записей 
V
    Опции темы
Istergul
  Дата 11.4.2009, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 26.11.2008

Репутация: нет
Всего: нет



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

Как вывести 10 самых комментируемых записей?
PM MAIL   Вверх
Shark
Дата 11.4.2009, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



делаешь подсчет коментарий в каждой записи и потом выводишь  10 самых больших коментариев


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
Sentox
Дата 12.4.2009, 02:10 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

Репутация: 7
Всего: 7



В табл. записей сделать дополнительную колонку num_comments default 0 . Увеличивать на единицу при каждом добавлении коммента.Соответственно она будет и просматриваться ...
PM MAIL   Вверх
Mpak
Дата 12.4.2009, 09:17 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 445
Регистрация: 12.11.2006

Репутация: нет
Всего: 7



Эм.. зачем еще один столбец?
есть замечательная функция mysql_num_rows(), которая вернет количество записей.
Код

<?php
$query = mysql_query("SELECT * FROM `comments` WHERE `id_nodes`=".$id);
$num   = mysql_num_rows($query);
?>



--------------------
В любой откомпилированной программе есть, по крайней мере, одна ошибка...
P.S. А у меня их минимум две...
PM MAIL ICQ   Вверх
Istergul
Дата 12.4.2009, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 26.11.2008

Репутация: нет
Всего: нет



Sentox, Вот я добавил столбец. А какмим запросом вывести 10 самых комментируемых?
PM MAIL   Вверх
enof
Дата 12.4.2009, 13:29 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 30
Всего: 35



Mpak,  И? Предлагаете считать коменты для каждой записи?
Цитата(Istergul @  12.4.2009,  13:57 Найти цитируемый пост)
Sentox, Вот я добавил столбец. А какмим запросом вывести 10 самых комментируемых? 

Код

SELECT * FROM `table` ORDER BY `num_comments` DESC LIMIT 10

PM MAIL ICQ Skype   Вверх
azesmcar
Дата 12.4.2009, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 12
Всего: 211



По моему лучше считать коменты для каждой записи чем обновлять при добавлении и удалении.

Код

    select r.id, r.message, count(c.id) cnt from records r, comments c
        where r.id=c.record_id
    group by r.id, r.message
    order by count(c.id) desc
    limit 10

PM   Вверх
Istergul
Дата 12.4.2009, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 26.11.2008

Репутация: нет
Всего: нет



enof, Спасибо)
PM MAIL   Вверх
02077461
Дата 20.7.2009, 15:01 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



Вы что? Честное слово, я чуть не плачу.
Цитата(Shark @  11.4.2009,  23:46 Найти цитируемый пост)
делаешь подсчет коментарий в каждой записи и потом выводишь  10 самых больших коментариев 
 тут вообще не понятно что имелось ввиду
Цитата(Mpak @  12.4.2009,  09:17 Найти цитируемый пост)
Эм.. зачем еще один столбец?
есть замечательная функция mysql_num_rows(), которая вернет количество записей.
 автор ответа явно не понял о чем вопрос
Цитата(azesmcar @  12.4.2009,  13:38 Найти цитируемый пост)
о моему лучше считать коменты для каждой записи чем обновлять при добавлении и удалении.
 это чудовищно. просто чудовищно.


Sentox привел правильное решение, единственное что можно добавить, что лучше апдейтить поля через триггеры (которые поддерживаются наверное всеми более-менее СУБД) и добавить внешний ключ для поддержания целостности данных и защиты от аномалий.

<offtop>а почему никто не перенес этот топик в БД?</offtop>
PM   Вверх
azesmcar
Дата 20.7.2009, 15:08 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 12
Всего: 211



Цитата(02077461 @  20.7.2009,  15:01 Найти цитируемый пост)
 это чудовищно. просто чудовищно.

 smile 
еще бы рассказал что тут чудовищного.
group by никому нафиг не нужен, ай-да всех на триггеры.

Это сообщение отредактировал(а) azesmcar - 20.7.2009, 15:11
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0551 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.