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

Форум MySQL

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

 

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

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

тема: Две таблицы и рейтинг
 
 автор: stasmus   (17.10.2007 в 17:49)   письмо автору
 
 

Здравствуйте, у меня такой вопрос: Как выполнить такой запрос?

Есть таблица А и таблица Б. Таблица Б связана по ключу pr_id с id таблицы А (Таблица А - новость, таблица Б-коменты к той или иной новости)
В наблице Б есть поле оценка новости (rating)
Как вывести таблицу А с суммой rating для конкретной новости? И ноль если коментов нет

Пример
A
id | name
1 | новость 1
2 | новость 2
3 | новость 3

Б
id | name | pr_id | rating
1| комент1| 3 | 5
2| комент2| 3 | 4
3| комент3| 3 | 3
4| комент4| 1 | 1
5| комент5| 1 | 2

результат
id | name | rating
1 | новость 1 | 3
2 | новость 2 | 0
3 | новость 3 | 12

   
 
 автор: provodnik   (18.10.2007 в 00:00)   письмо автору
 
   для: stasmus   (17.10.2007 в 17:49)
 


<?
$query 
mysql_query("SELECT A.id as board_id, A.name as board_name, A.*, B.* FROM А as A, Б as B WHERE B.pr_id = A.id ORDER by rating ASC");
echo 
"<table>";
    echo 
"<tr><td>#ID</td><td>name</td><td>rating</td></tr>";
while(
$board mysql_fetch_assoc($query))
{
    echo 
"<tr>";
    echo 
"<td>".$board['board_id']."</td>";
    echo 
"<td>".$board['board_name']."</td>";
    if (
$board['rating']) echo "<td>".$board['rating']."</td>"; else echo "<td> 0 </td>";
    echo 
"</tr>";
}        
echo 
"</table>";
?>

Могу ошибиться. Очень неудобно мне сейчас писать...

   
 
 автор: oradev   (18.10.2007 в 12:44)   письмо автору
 
   для: stasmus   (17.10.2007 в 17:49)
 

Сделаете так:

select n.name, SUM(IFNULL(c.rating,0))
from news as n LEFT JOIN comment c ON (n.id = c.pr_id)
group by n.id
order by n.name;

   
 
 автор: stasmus   (18.10.2007 в 13:51)   письмо автору
 
   для: oradev   (18.10.2007 в 12:44)
 

Большое спасибо!

   
Rambler's Top100
вверх

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