Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Сложное объединение таблиц (Kaverdo) 05/07/2005 - 05:29:48
      Re: сам дурак :-) (Kaverdo) 05/07/2005 - 06:43:29
      Re: Примечание... (Валентин) 05/07/2005 - 10:22:46



From: Kaverdo - 05/07/2005 - 05:29:48
Subject:Сложное объединение таблиц
-----------------
Есть две таблицы: forum и users.
forum: forum_id, parent_id, date, user_id, author
users: user_id, login

В forum хранятся все сообщения плоского (не древовидного) форума: корневые и ответы. То есть у корневых сообщений parent_id равен нулю, у ответов равен forum_id корневого сообщения. Сообщения, написанные авторизованными пользователями содержат значимый user_id.

Задача из пяти частей:
1. Выбрать корневые сообщения
2. Посчитать количество ответов на них
3. Получить дату последнего ответа на корневое сообщение, а если ответов нет — то дату самого корневого собщения.
4. Если есть user_id у корневого сообщения, получить из users логин пользователя, иначе — просто забрать поле author.
5. п. 4 для последнего ответа на корневое сообщение (если он есть).

И все это сделать одним запросом. C первыми четырьмя все довольно просто:

SELECT
root.forum_id,
root.date,
IFNULL(children.date,root.date) AS last_dt,
IFNULL(users.login,root.author) AS author,
COUNT(children.forum_id) AS cnt
FROM
forum AS root
LEFT JOIN forum AS children ON root.id=children.parent_id
LEFT JOIN users ON root.user_id=users.user_id
WHERE root.parent_id=0
GROUP BY root.forum_id

Но на пятом пункте я споткнулся. Я ж не могу просто добавить к запросу:

LEFT JOIN users ON children.user_id=users.user_id

Намекните, пожалуйста, в какую сторону думать.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
22890



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |