parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

э-э-э, князь, ты не прав с такими запросами :)

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, в случае, если ты достаешь несколько столбцов.

соответственно раз подобная реализация работает случайно, то говорить о том, как искать в ней что-либо нету смысла :)

на самом деле я просто показал, где ошибка в реализации.
как сейчас выкрутиться - я с ходу придумать не могу. но мне это интересно, на досуге подумаю.