Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> помогите составить запрос -ORDER BY перед GROUP BY
vuler  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 72
Пользователь №: 31265
На форуме: 5 лет, 4 месяца, 28 дней
Карма:




Делаю что-то типа мини-форума, но тут возник вопрос с выборкой.
Есть 3 таблицы - forum_dirs - структура форума(разделы - AL(через parant_id)), forum_topics - темы, forum_msgs - сообщения к темам.
Хочу одним запросом выдернуть все разделы форума, одновременно взяв последнюю тему и если есть сообщение в этой теме. Одновременно посчитав количество сообщений и тем в каждом разделе(это пока опущу в примере).
Проблема в том, что Mysql выполняет сначала группировку, потом сортировку, т.е. я не могу сделать запрос типа.
forum_topics

SELECT
forum_dirs.*,forum_topics.id topic_id,forum_topics.dir_id dir_id, forum_topics.title,forum_topics.date topic_date,forum_msgs.id msg_id,forum_msgs.date msg_date,forum_msgs.text msg_text,users.logo,users.name user_name,users.login user_login
FROM forum_dirs
LEFT JOIN forum_topics ON forum_topics.dir_id=forum_dirs.id
LEFT JOIN forum_msgs ON forum_msgs.topic_id=forum_topics.id
LEFT JOIN users ON forum_msgs.user_id=users.id
ORDER BY
forum_dirs.id ASC,
forum_dirs.parent_id ASC,
forum_dirs.pos ASC,
forum_topics.date DESC,
forum_msgs.date DESC
GROUP BY
dir_id

Порылся на форумах, все советуют сделать запросы типа.

SELECT * FROM (
SELECT
forum_dirs.*,forum_topics.id topic_id,forum_topics.dir_id dir_id, forum_topics.title,forum_topics.date topic_date,forum_msgs.id msg_id,forum_msgs.date msg_date,forum_msgs.text msg_text,users.logo,users.name user_name,users.login user_login
FROM forum_dirs
LEFT JOIN forum_topics ON forum_topics.dir_id=forum_dirs.id
LEFT JOIN forum_msgs ON forum_msgs.topic_id=forum_topics.id
LEFT JOIN users ON forum_msgs.user_id=users.id
ORDER BY
forum_dirs.id ASC,
forum_dirs.parent_id ASC,
forum_dirs.pos ASC,
forum_topics.date DESC,
forum_msgs.date DESC
) p1 GROUP BY dir_id

Но тут получается та же самая ерунда не отсортированная на выходе.
Помогите как можно составить запрос?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса