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

Форум MySQL

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

 

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

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

тема: Подсчет количества строк и выборка из таблиц
 
 автор: Dred   (01.06.2008 в 00:32)   письмо автору
 
 

Есть таблицы
comments

comment_id
comment_news_id
comment_data

news
news_id
news_title
news_autor

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

SELECT news_id, news_title
FROM news
JOIN (SELECT comment_id AS nid, COUNT(*) AS total FROM comments GROUP BY comment_id) AS sel1 ON news.news_id = sel1.nid
ORDER BY sel1.total DESC LIMIT 10

   
 
 автор: Root   (01.06.2008 в 09:19)   письмо автору
 
   для: Dred   (01.06.2008 в 00:32)
 

>ON news.news_id = sel1.nid ??
SELECT news_id, news_title
FROM news 
JOIN (
    SELECT COUNT(comment_id) AS total, comment_news_id 
    FROM comments GROUP BY comment_news_id) 
    AS sel1 ON news.news_id = sel1.comment_news_id 
ORDER BY sel1.total DESC LIMIT 10

   
 
 автор: Dred   (01.06.2008 в 13:37)   письмо автору
 
   для: Root   (01.06.2008 в 09:19)
 

а как мне вывести название новости и количество комментариев??

Данная конструкция мне выводит только одно значение total, при том что количество названий новостей 10...:

do
{
echo $row_com['total'].' '.$row_com['title']';
}
while ($row_com = mysql_fetch_assoc($com));

   
 
 автор: Root   (01.06.2008 в 13:46)   письмо автору
 
   для: Dred   (01.06.2008 в 13:37)
 

она тотал выводит? :)

<?php
$query 
"SELECT news_id, news_title, sel1.total 
FROM news  
JOIN ( 
    SELECT COUNT(comment_id) AS total, comment_news_id  
    FROM comments GROUP BY comment_news_id)  
    AS sel1 ON news.news_id = sel1.comment_news_id  
ORDER BY sel1.total DESC LIMIT 10"
;
$result mysql_query($query);
while (
$row mysql_fetch_assoc($result)) {
 echo 
$row['total'];
 echo 
$row['news_title'];
 echo 
$row['news_id'];
}
?>

   
 
 автор: Trianon   (01.06.2008 в 13:50)   письмо автору
 
   для: Dred   (01.06.2008 в 13:37)
 

>а как мне вывести название новости и количество комментариев??
>Данная конструкция мне выводит только одно значение total, при том что количество названий новостей 10...:

Она вообще total выводить не должна. В верхнем SELECT-списке поле total не фигурирует.


>
>do
>{
>echo $row_com['total'].' '.$row_com['title']';
>}
> while ($row_com = mysql_fetch_assoc($com));

Вы не указали сам запрос.

   
 
 автор: Dred   (01.06.2008 в 16:11)   письмо автору
 
   для: Trianon   (01.06.2008 в 13:50)
 

Спасибо, получилось...

   
Rambler's Top100
вверх

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