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

Форум MySQL

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

 

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

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

тема: Подсчет количества записей в SQL-базе
 
 автор: kosta_in_net   (02.07.2009 в 18:35)   письмо автору
 
 

есть подборка статей. В индексном файле выглядит так:

Заголовок статьи со ссылкой на статью
ссылка на комментарии

Заголовок статьи со ссылкой на статью
ссылка на комментарии

Заголовок статьи со ссылкой на статью
ссылка на комментарии
...

То есть, вроде обычного блога.

Проблема в том, что нужно вывести количество комментариев к каждой статье, но не хочется делать sql-запрос на определение количества после каждого заголовка. На данный момент, я представляю себе такой механизм:

<?php
$sql ='SELECT * FROM статьи';
$result=mysql_query($sql);
while ($sql_ar=mysql_fetch_assoc($result)) {

echo 'Заголовок статьи';
$sql ='SELECT SQL_CALC_FOUND_ROWS id FROM комментарии WHERE id_статьи='.$sql_ar['id'];
$FOUND=mysql_query($sql);
$sql='SELECT FOUND_ROWS()';
$FOUND_ROWS=mysql_query($sql);
$комментариев=mysql_fetch_row($FOUND_ROWS);
echo 'Комментарии '.$комментариев;
mysql_free_result($FOUND_ROWS);
}
mysql_free_result($result);
?>

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

  Ответить  
 
 автор: Trianon   (02.07.2009 в 19:25)   письмо автору
 
   для: kosta_in_net   (02.07.2009 в 18:35)
 

У Вас каша в голове.
Модификатор SQL_CALC_FOUND_ROWS имеет смысл лишь для запроса, содержащего LIMIT
SELECT FOUND_ROWS() вернет число найденных строк без учета ограничения этим LIMIT и только

  Ответить  
 
 автор: kosta_in_net   (02.07.2009 в 19:37)   письмо автору
 
   для: Trianon   (02.07.2009 в 19:25)
 

значит без SQL_CALC_FOUND_ROWS. Я ж примерно написал, на скорую руку. Если бы я написал отличный код, зачем бы я спрашивал, как его усовершенствовать?
Какие-то есть более конструктивные предложения, помимо оскорблений моей каши?

  Ответить  
 
 автор: Trianon   (02.07.2009 в 19:47)   письмо автору
 
   для: kosta_in_net   (02.07.2009 в 19:37)
 

В таком ключе диалога - пожалуй нет...

  Ответить  
 
 автор: kosta_in_net   (03.07.2009 в 00:14)   письмо автору
 
   для: Trianon   (02.07.2009 в 19:47)
 

Я бы с радостью поменял ключ, только как? Я писал кучу програм под винду и скриптов под веб-сервер, но именно в скуеле опыта мало.

  Ответить  
 
 автор: Trianon   (03.07.2009 в 00:52)   письмо автору
 
   для: kosta_in_net   (03.07.2009 в 00:14)
 

http://softtime.ru/forum/read.php?id_forum=3&id_theme=57270

  Ответить  
 
 автор: kosta_in_net   (04.07.2009 в 23:58)   письмо автору
 
   для: Trianon   (03.07.2009 в 00:52)
 

Спасибо, помогло.

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

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