powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Опять проблема объединения в один запрос :(
2 сообщений из 2, страница 1 из 1
Опять проблема объединения в один запрос :(
    #33280652
Nafigator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Следующий запрос выводит информацию по теме определенного форума

Код: plaintext
SELECT topic_id, topic_name, topic_description, response_id, response_to_id, user_name, FROM_UNIXTIME(response_creation_datetime, '%e %M, %Y at %H:%i') AS responsetime FROM topics LEFT JOIN responses ON topic_id = response_topic_id LEFT JOIN users ON response_author_id = user_id WHERE topic_forum_id =  1 

- это пока без GROUP.

Нужно вывести следующее: имя + описание темы, кол-во ответов, автор сообщения, дата и автор последнего ответа. Вот тут и возникли сложности.
Для простоты покажу вывод первого запроса, для простоты выкину отдельные поля

topic_id response_id response_to_id user_name responsetime
1 1 A 12 Aug
1 2 1 B 13 Aug
1 3 2 C 14 Aug
2 4 B 12 Aug

Нужно что-то типа (понятно, что так не сработает):

Код: plaintext
SELECT topic_id, topic_name, topic_description, response_id, COUNT(response_id) -  1  AS replies, IF (response_to_id , user_name, '') AS author, IF (response_creation_datetime = MAX(response_creation_datetime), user_name, '') AS last_update_author, FROM_UNIXTIME(MAX(response_creation_datetime), '%e %M, %Y at %H:%i') FROM topics LEFT JOIN responses ON topic_id = response_topic_id LEFT JOIN users ON response_author_id = user_id WHERE topic_forum_id =  1  GROUP BY topic_id

Или же придется делать первый запрос и в цикле, в скрипте, проверять значения? (у меня PHP + MySQL 3.23)

Примечение: если response_to_id - пустое, значит данный user_name - это автор сообщения.
...
Рейтинг: 0 / 0
Опять проблема объединения в один запрос :(
    #33280664
Nafigator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Во втором запросе - пропуск. Имелось в виду

Код: plaintext
SELECT topic_id, topic_name, topic_description, response_id, COUNT(response_id) -  1  AS replies, IF (response_to_id IS NULL, user_name, '') AS author, IF (response_creation_datetime = MAX(response_creation_datetime), user_name, '') AS last_update_author, FROM_UNIXTIME(MAX(response_creation_datetime), '%e %M, %Y at %H:%i') FROM topics LEFT JOIN responses ON topic_id = response_topic_id LEFT JOIN users ON response_author_id = user_id WHERE topic_forum_id =  1  GROUP BY topic_id
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Опять проблема объединения в один запрос :(
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]