Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хитрый поиск первичной записи и вторичной за время 
V
    Опции темы
Lorigin
Дата 19.7.2009, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Печатаю фото на холс



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 11.3.2008
Где: Москва

Репутация: нет
Всего: нет



Добрый день, сижу ломаю голову

есть таблица reception, там id человека, и дату приема

вообщем нужно посчитать дату первичного приема (приемы могут заполняться задним числом) делаю это так:

Код

SELECT id, MIN(date) as firstrec FROM receptions 
GROUP BY id ORDER BY `id` 


так же существует "вторичный" прием.. то есть это минимальный по дате прием (из диапазона), но не первичный... тоесть вторичный прием за разные промежутки разный.

пример приемов записи по одному ID:
10.03.2008  <- первичный прием
12.03.2008  <- вторичный прием за 2008 год
18.09.2008
10.03.2009 <- вторичный прием за 2009 год
13.05.2009

 
что собственно нужно сделать:
1. в заданном временном промежутке найти все записи у которых есть первичный прием
Не понимаю почему не работает:
Код

SELECT * MIN(date) as firstrec FROM receptions 
GROUP BY id
HAVING firstrec BETWEEN '2009-3-19' AND '2009-7-19' ORDER BY id


2. в заданном временном промежутке найти все записи у которых есть вторичный прием
как это делать я вообще не понимаю.. возможно ли исключить из таблицы поиска первичные приемы (пункт 1) и уже в этом искать минимальное вхождение..

очень прошу помощи, голова уже кругом 

PM MAIL WWW   Вверх
Akina
Дата 21.7.2009, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Вытащить все "первичные приёмы" несложно, это ты сделал.
Осталось отделить нужные приёмы (нужным образом связать исходную таблицу с запросом) и наложить требование попадания в период:
Код

select *
from reception as r
join 
(
  SELECT id, MIN(date) as firstrec 
  FROM receptions 
  GROUP BY id 
) as r1
on r.id=r1.id and r.date>r1.firstrec 
where r.date between StartOfPeriod and EndOfPeriod

При связывании r.date>r1.firstrec даёт вторичные приёмы, а r.date=r1.firstrec соответственно первичные.

Это сообщение отредактировал(а) Akina - 21.7.2009, 19:32


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Lorigin
Дата 23.7.2009, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Печатаю фото на холс



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 11.3.2008
Где: Москва

Репутация: нет
Всего: нет



спасибо огромное
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0652 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.