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

Форум MySQL

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

 

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

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

тема: Реально соеденить воедино?
 
 автор: Рома   (25.07.2009 в 21:13)   письмо автору
 
 

Есть запрос, который выводит темы форума подсчитывая количество постов в теме.
t - таблица тем
p - таблица постов
Вот он

$sql="SELECT t.name, t.time_reg_max_post, COUNT(p.pn) AS num
      FROM sfm_themes t
      LEFT JOIN sfm_posts p ON t.pn=p.themes
      WHERE t.forums=".$f."
      GROUP BY t.pn
      ORDER BY t.time_reg_max_post DESC";

если запустить этот запрос, то выводится количество постов в теме, время которых больше, чем время последнего посещения форума пользователем

$sql="SELECT t.name, t.time_reg_max_post, COUNT(p.pn) AS new
      FROM sfm_themes t
      LEFT JOIN sfm_posts p ON t.pn=p.themes AND p.reg_data > ".$time."
      WHERE t.forums=".$f."
      GROUP BY t.pn
      ORDER BY t.time_reg_max_post DESC";

Можно обойтись одним запросом, чтобы получить одним массивом и общее количество постов, и количество постов с момента последнего посещения? Куда рыть, если можно?

  Ответить  
 
 автор: Рома   (26.07.2009 в 06:31)   письмо автору
 
   для: Рома   (25.07.2009 в 21:13)
 

Проблема решена, я хотел вот так:

$sql="SELECT
    t.name, t.time_reg_max_post,
    COUNT(p.pn) AS num,
    SUM(CASE WHEN p.reg_data > $time THEN 1 ELSE 0 END) AS new
    FROM sfm_themes t
    LEFT JOIN sfm_posts p ON t.pn=p.themes
    WHERE t.forums= $f
    GROUP BY t.pn
    ORDER BY t.time_reg_max_post DESC";

  Ответить  
 
 автор: Trianon   (26.07.2009 в 14:28)   письмо автору
 
   для: Рома   (26.07.2009 в 06:31)
 

SUM(CASE WHEN p.reg_data > $time THEN 1 ELSE 0 END)

=
SUM(p.reg_data > $time)

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

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