Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




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, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
2998



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |