SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 11.02.2012 14:52:33

mifrilor
Участник
Зарегистрирован: 11.02.2012
Сообщений: 1

Вбырать данные за период времени, если только их нет в дальнейшем...

Добрый день. Не могу решить такую задачу.
Есть две таблицы:
DOC
id | client_id | date
1 | 4 | 05.04.2009
2 | 1 | 11.04.2009
3 | 3 | 13.04.2009
4 | 5 | 19.04.2009
5 | 3 | 28.04.2009
6 | 1 | 08.06.2009
7 | 3 | 11.09.2009
8 | 2 | 28.11.2009
9 | 5 | 19.12.2009

и

CLIENT
id | Name
1 | Dmitrii
2 | Artem
3 | Viktoriya
4 | Elena
5 | Stanislav
задача: выбрать всех клиентов за апрель (хх.04.2009), которые не пришли после апреля ни разу,
тоесть
SELECT * from Doc INNER JOIN Client ON Doc.Client_id= Client.id
WHERE Doc.date= BETWEEN '01.04.2009' and '30.04.2009' - вполне подходит, но как теперь отсортировать клиентов номер 1,3,5 , которые пришли повторно в
1 - 08.06.2009
3 - 11.09.2009
5 - 19.12.2009
и оставить только клиента с id=4 ?

Заранее премного благодарен за помощь.

Отредактированно mifrilor (11.02.2012 14:53:12)

Неактивен

 

#2 11.02.2012 15:04:27

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Вбырать данные за период времени, если только их нет в дальнейшем...

select t1.client_id from
(select client_id from Doc WHERE Doc.`date`= BETWEEN '01.04.2009' and '30.04.2009') t1
left join
(select client_id from Doc WHERE Doc.`date`> '30.04.2009') t2 on t1.client_id=t2.client_id
where t2.client_id is null
 

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson