э-э-э, князь, ты не прав с такими запросами :)
Misha v.3 08.08.2003 18:01
твой запрос делает совсем не то, что ты думаешь.
давай пока забудем про поиск...
дело в том, что ORDER работает
после GROUP BY, и то, что у тебя выдается запись с revision 'август' - случайность.
попробуй создай тестовую базу и поиграйся с ней и ты увидишь, что один и тот-же запрос (как твой приведенный) возвращает разные данные в зависимости от того, что у тебя в БД.
например, если у тебя это:
id > doc_id > title > body > revision
13 > 10 > Тест > Вася > август
10 > 10 > Тест > Маша > май
то получишь Вася, а если это:
id > doc_id > title > body > revision
13 > 10 > Тест > Вася > май
10 > 10 > Тест > Маша > август
то получишь - Маша (но это совершенно не обязательно, результат может быть произволен)
(мой пример тестового запроса:
SELECT
body
FROM
t2, t1
WHERE
t2.doc_id = t1.doc_id
GROUP BY
t2.doc_id
ORDER BY
revision DESC
)
это расплата за ту халяву, которую предлагает MySQL по пользованию его GROUP BY. ни один другой SQL тебе не позволит написать так запросто GROUP BY doc_id, в случае, если ты достаешь несколько столбцов.
соответственно раз подобная реализация работает случайно, то говорить о том, как искать в ней что-либо нету смысла :)
на самом деле я просто показал, где ошибка в реализации.
как сейчас выкрутиться - я с ходу придумать не могу. но мне это интересно, на досуге подумаю.