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

Форум MySQL

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

 

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

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

тема: Трехтабличный запрос: количество постов в данном форуме
 
 автор: mihdan   (30.07.2008 в 15:05)   письмо автору
 
 

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

forums - список форумов

id
name


themes - список тем принадлежащих форумам

id
name 
id_forum


messages - сообщения, принадлежащие определенной теме

id
name
id_theme


1. Каким образом (один запрос) можно посчитать количество ответов(messages) в данном форуме(для каждого форума из forums)?
2. Вывести последнее сообщение в форуме?

Главное условие, не вводить связи forums-messages типа

id
name
id_forum
id_theme


ЗЫ: не люблю доработки, но ... изменить структура таблиц нельзя так как записей форума уже очень много
ЗЫ2: Trianon, Cheops, заранее благодарен

  Ответить  
 
 автор: Trianon   (30.07.2008 в 15:28)   письмо автору
 
   для: mihdan   (30.07.2008 в 15:05)
 

Так ничего вводить и не требуется.
SELECT f.*, cnt 
  FROM forums  AS f  
  LEFT JOIN (
    SELECT t.id_forum as fid,  COUNT(m.id_theme) AS cnt
        LEFT JOIN messages AS m ON t.id = m.id_theme
       GROUP BY fid ) AS  r 
    ON f.id = r.fid
  ORDER BY f.name

  Ответить  
 
 автор: mihdan   (30.07.2008 в 15:33)   письмо автору
 
   для: Trianon   (30.07.2008 в 15:28)
 

Trianon, в очередной раз убедился что "вы гений SQL" (по словам Cheops'a). Огромное человеческое спасибо.

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

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