







|
MySQL.RU - Webboard
Вернуться
Выборка по дате (krock) 23/05/2002 - 09:14:27
Re: Выборка по дате (Василий) 23/05/2002 - 12:53:48
Re: Выборка по дате (Василий) 23/05/2002 - 12:56:13
Re: Выборка по дате (krock) 23/05/2002 - 14:03:38
> Original message text:
> From: krock - 23/05/2002 - 09:14:27
> Subject:Выборка по дате
> -----------------
> All, пжалста подмогните.
> ЕСТЬ: набор филиалов компании, в каждом из филиалов есть свои новости, кроме того есть просто новости.
> НАДО: выбрать последнюю новость из каждого филиала
> ДЕЛАЛ: SELECT * from news where priznak=2(новости относящиеся к филиалам) GROUP BY cod(это код филиала) ORDER BY data DESC;
> РЕЗУЛЬТАТ: Выбирает каждый филиал, НО новости получаются не последние, то есть свежие, а первые ????!!!!
>
From: Василий - 23/05/2002 - 12:53:48
Subject:Выборка по дате
-----------------
Потому что GROUP BY используешь.
Сначала просиходит группировка. Поля, которые не входят в список GROUP BY, MySQL вот как обрабатывает : просто берет первую попавшуюся запись с такой датой и берет их оттуда. А первая попавшаяся и есть первая по времени. И вот эти полученные записи уже упорядочиваются по убыванию времени.
Тут надо временную таблицу делать.
drop table tmpnews if exists;
create table tmpnews as select cod as cod, max(date) as date from news where priznak=2 group by cod;
select n.cod, n.newstxt from news n inner join tmpnews t on n.cod = t.cod and n.date = t.date;
cod и date в исходной таблице лучше проиндексировать.
либо, если в таблице news есть идентификатор auto_increnment, то лучше даже так
drop table tmpnews if exists;
create table tmpnews as select max(id) as id from news where priznak=2 group by cod;
select n.cod, n.newstxt from news n inner join tmpnews t on n.id = t.id;
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
2998
|
|