Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Самая комментируемая статья
 
 автор: (Sandr)   (22.06.2011 в 22:05)   письмо автору
 
 

Есть 2 таблицы. 1я в которой содержатся статьи (записи) и 2я в которой есть комменты к этим записям. Подскажите пжл, как можно вывести, например, 5 самых комментируемых записей?

  Ответить  
 
 автор: Саня   (22.06.2011 в 22:33)   письмо автору
 
   для: (Sandr)   (22.06.2011 в 22:05)
 

В таблицу со статьями ввести счётчик комментариев и обновлять по мере надобности. Затем произвести сортировку по этому полю не составит труда.

  Ответить  
 
 автор: (Sandr)   (22.06.2011 в 23:07)   письмо автору
 
   для: Саня   (22.06.2011 в 22:33)
 

Тоже сначала хотел так сделать, но для этого нужно ещё одно поле, и каждый раз, при изменении количества комментов нужно изменять и значение в той таблице.. Я знаю, что есть способ по проще, но вот какой..))

  Ответить  
 
 автор: Саня   (23.06.2011 в 10:21)   письмо автору
 
   для: (Sandr)   (22.06.2011 в 23:07)
 

Способ есть и вряд ли он проще в плане нагрузки на базу данных.

  Ответить  
 
 автор: MHz   (22.06.2011 в 22:48)   письмо автору
 
   для: (Sandr)   (22.06.2011 в 22:05)
 

Это Вам в тему про SQL надо. Какая структура таблиц? Вообще, думаю нужно сгруппировать комментарии по идентификатору статьи, посчитать их количество и отсортировать.

  Ответить  
 
 автор: (Sandr)   (22.06.2011 в 23:13)   письмо автору
 
   для: MHz   (22.06.2011 в 22:48)
 

CREATE TABLE `cat` (
`id` int(5) NOT NULL auto_increment,
`name` text NOT NULL,
`about` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE `art` (
`id` int(15) NOT NULL auto_increment,
`id_cat` int(10) NOT NULL,
`name` varchar(50) NOT NULL,
`text` text NOT NULL,
`date` int(25) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Можете подсказать как? Мне говорили, про то, что в запросе должно быть что-то в роде .... GROUP BY .... Но как именно не сказали(( Подскажите пжл или дать ссылки на статьи в которых про это говорится подробно.

  Ответить  
 
 автор: MHz   (23.06.2011 в 00:39)   письмо автору
 
   для: (Sandr)   (22.06.2011 в 23:13)
 

Боюсь что-то я напутал :)
SELECT cat.name, COUNT (art.id_cat) AS sum FROM art, cat WHERE cat.id=art.id_cat GROUP BY (cat.id) ORDER BY sum DESC

  Ответить  
 
 автор: (Sandr)   (23.06.2011 в 12:24)   письмо автору
 
   для: MHz   (23.06.2011 в 00:39)
 

Спасибо.
Не могли бы вы ещё объяснить, что значит символ "." (точка) в этом запросе?

  Ответить  
 
 автор: cheops   (23.06.2011 в 12:51)   письмо автору
 
   для: (Sandr)   (23.06.2011 в 12:24)
 

Так как это многотабличный запрос, т.е. обращен сразу к двум таблицам, нужн способ различать поля из одной и другой таблиц. Поэтому используются так называемые расширенные имена, с указанием имени таблицы и через точку имени поля данной таблицы.

  Ответить  
 
 автор: Valick   (23.06.2011 в 12:52)   письмо автору
 
   для: (Sandr)   (23.06.2011 в 12:24)
 

cat - таблица, name - поле этой таблицы

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования