Помогите новичку (Выборка новых клиентов)
Помогите новичку (Выборка новых клиентов)
Есть таблица с полями номер заказа,телефон и дата создания заказа
Как выбрать новых клиентов из этой таблицы? (т.е. телефонные номера, которые имеют заказы за последний месяц и не имели заказов до этого месяца)
Как выбрать новых клиентов из этой таблицы? (т.е. телефонные номера, которые имеют заказы за последний месяц и не имели заказов до этого месяца)
Re: Помогите новичку (Выборка новых клиентов)
изучайте SQL. если речь идет об одной таблице, то запрос получается элементарный.
Если же речь о двух таблицах (клиенты и заказы), то нужно читать
http://www.ibase.ru/devinfo/joins.htm
Если же речь о двух таблицах (клиенты и заказы), то нужно читать
http://www.ibase.ru/devinfo/joins.htm
Re: Помогите новичку (Выборка новых клиентов)
с join работать умеем
Подробнее:
- таблица arch
{поля: t_zakaz -время создания заказа,
cod_cl - код клиента}
- таблица client
{поля: tel - телефон клиента
cod_cl - код клиента}
пробовал запрос такого плана(получил multiple rows вместо результата):
select DISTINCT (c.tel) from arch a join client c on (a.cod_cl=c.cod_cl) where t_zakaz >'01.11.2012 09:00:00' and (select c.tel from arch a join client c on (a.cod_cl=c.cod_cl) where t_zakaz <'01.11.2012 09:00:00' ) is null
Повторюсь Цель-получить номера новых клиентов, которые появились за последний месяц
Подробнее:
- таблица arch
{поля: t_zakaz -время создания заказа,
cod_cl - код клиента}
- таблица client
{поля: tel - телефон клиента
cod_cl - код клиента}
пробовал запрос такого плана(получил multiple rows вместо результата):
select DISTINCT (c.tel) from arch a join client c on (a.cod_cl=c.cod_cl) where t_zakaz >'01.11.2012 09:00:00' and (select c.tel from arch a join client c on (a.cod_cl=c.cod_cl) where t_zakaz <'01.11.2012 09:00:00' ) is null
Повторюсь Цель-получить номера новых клиентов, которые появились за последний месяц
Re: Помогите новичку (Выборка новых клиентов)
Значит так никто и не может помочь ( Вроде подробно же расписал
Re: Помогите новичку (Выборка новых клиентов)
статью читайте, до просветления.
вот этот ужас зачем вы пишете?
t_zakaz >'01.11.2012 09:00:00' and (select c.tel ...
p.s. "с join умею" - ага, конечно. с sql вы точно так же умеете.
вот этот ужас зачем вы пишете?
t_zakaz >'01.11.2012 09:00:00' and (select c.tel ...
p.s. "с join умею" - ага, конечно. с sql вы точно так же умеете.
Re: Помогите новичку (Выборка новых клиентов)
Не имею права с Вами спорить.
Возможно дело не в запросе а в самом алгоритме выборки? так подскажите..
Если правильный,то..
В своём запросе я прошу выбрать все телефоны клиентов, у которых есть заказы после '01.11.2012 09:00:00' (t_zakaz >'01.11.2012 09:00:00' понимаю что правильнее a.t_zakaz - просто пытался изменить реальные данные на скорую руку) и нет заказов до этого (select c.tel from arch a join client c on (a.cod_cl=c.cod_cl) where a.t_zakaz <'01.11.2012 09:00:00' ) is null
Возможно это в корне неправильно. Хотя если правильно то подскажите где я ошибся
очевидно что "on" я использую для join а "where" для выборки значений
(DISTINCT - просто защита от мультиселекта)
Повторяюсь нужно выбрать только новых клиентов, т.е. клиентов у которых существуют заказы только после '01.11.2012 09:00:00', но конструкции EXISTS ONLY нет
Возможно дело не в запросе а в самом алгоритме выборки? так подскажите..
Если правильный,то..
В своём запросе я прошу выбрать все телефоны клиентов, у которых есть заказы после '01.11.2012 09:00:00' (t_zakaz >'01.11.2012 09:00:00' понимаю что правильнее a.t_zakaz - просто пытался изменить реальные данные на скорую руку) и нет заказов до этого (select c.tel from arch a join client c on (a.cod_cl=c.cod_cl) where a.t_zakaz <'01.11.2012 09:00:00' ) is null
Возможно это в корне неправильно. Хотя если правильно то подскажите где я ошибся
очевидно что "on" я использую для join а "where" для выборки значений
(DISTINCT - просто защита от мультиселекта)
Повторяюсь нужно выбрать только новых клиентов, т.е. клиентов у которых существуют заказы только после '01.11.2012 09:00:00', но конструкции EXISTS ONLY нет
-
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
Re: Помогите новичку (Выборка новых клиентов)
Зато есть агрегатная функция MIN() и кляуза HAVING в которой их (агрегатные функции) можно использовать.
Re: Помогите новичку (Выборка новых клиентов)
Dimitry Sibiryakov
Большое спасибо
Запрос реально тривиальный.. когда знаешь о функции having min(a.t_zakaz)
Большое спасибо
Запрос реально тривиальный.. когда знаешь о функции having min(a.t_zakaz)