Форум программистов, компьютерный форум, киберфорум
Наши страницы
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
alexmafacka
0 / 0 / 0
Регистрация: 11.11.2017
Сообщений: 7
1

Запрос, возвращающий список всех клиентов, совершивших заказ за определенный период времени

15.11.2017, 17:51. Просмотров 1995. Ответов 7
Метки нет (Все метки)

Cформулируйте запрос, возвращающий список всех клиентов (с указанием фамилии и имени), совершивших заказ за определенный период времени
Две таблицы: Customer и Order
Значения в Customer: IdCust - код заказчика, FName - Имя, LName - Фамилия, IdCity - Код города, Adress - Адрес, Zip - Индекс и Phone - Телефон
Значения в Order: IdOrd - Код заказа, IdCust - код заказчика, ordDate - дата
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2017, 17:51
Ответы с готовыми решениями:

Нужен запрос, подсчитывающий количество клиентов, ни сделавших ни одного заказа в определенный период времени
Всем привет! Срочно нужна помощь в составлении sql запроса! Итак есть 2 таблицы: member( в ней...

Создать запрос, который бы считал сколько сколько процентов набежало за определенный период времени
Добрый день, всем участникам форума. Не могу справится с задачей. есть таблица "договора займа...

Копирование файлов за определенный период времени
Добрый день, Нужна помощь, задача: есть папка ARC, в ней находятся файлы *.log. Необходимо чтобы...

Шифрование ссылок на определенный период времени
Добрый день! Подскажите пожалуйста решение такой ситуации, есть ссылка со стороннего сайта для...

Защита файла от редактирования в определенный период времени
Доброго времени суток . Возникла необходимость запрета файла Excel по времени. Точнее после 14 00...

7
qwertehok
2590 / 2298 / 615
Регистрация: 29.08.2013
Сообщений: 15,386
15.11.2017, 18:56 2
Лучший ответ Сообщение было отмечено alexmafacka как решение

Решение

SQL
1
2
3
4
SELECT c.*
FROM ORDER o
JOIN Customer c ON o.IdCust =c.IdCust 
WHERE o.ordDate BETWEEN '20170101' AND '20171101'
запросвыдаст список ВСЕХ клиентов
если не нужны дубли, то нужно сгруппировать
1
alexmafacka
0 / 0 / 0
Регистрация: 11.11.2017
Сообщений: 7
15.11.2017, 19:12  [ТС] 3
qwertehok, Работает, есть ещё одно условие задачи и надеюсь отстану
Список клиентов, которые за заданный период (например, сентябрь 2010 года) совершили более 3 заказов.
Значения в Customer: IdCust - код заказчика, FName - Имя, LName - Фамилия, IdCity - Код города, Adress - Адрес, Zip - Индекс и Phone - Телефон
Значения в Order: IdOrd - Код заказа, IdCust - код заказчика, ordDate - дата
Значения в OrderItem: IdOrd- Код заказа, IdProd - код продукта или товара, Qty - количество заказов, Price - цена одного заказа
0
qwertehok
2590 / 2298 / 615
Регистрация: 29.08.2013
Сообщений: 15,386
15.11.2017, 19:49 4
третья таблица тут не нужна

SQL
1
2
3
4
5
6
7
8
SELECT * FROM Customer WHERE IdCust IN (
SELECT IdCust FROM ORDER o
JOIN (
SELECT IdOrd, COUNT(IdCust) FROM ORDER WHERE datepart(YEAR,ordDate)='2017' AND datepart(MONTH,ordDate)='9'
GROUP BY IdOrd
HAVING COUNT(IdCust)>3
) t ON o.IdOrd =t.IdOrd 
)
не очень красиво, но работает
1
alexmafacka
0 / 0 / 0
Регистрация: 11.11.2017
Сообщений: 7
15.11.2017, 19:56  [ТС] 5
qwertehok, выдало ошибку: "Сообщение 8155, уровень 16, состояние 2, строка 7
Для столбца 2 таблицы "t" не указано имя."
0
qwertehok
2590 / 2298 / 615
Регистрация: 29.08.2013
Сообщений: 15,386
16.11.2017, 07:40 6
4я строка
вот это
SQL
1
SELECT IdOrd, COUNT(IdCust)
заменить на
SQL
1
SELECT IdOrd, COUNT(IdCust) AS Количество
1
kipiwpartner
0 / 0 / 0
Регистрация: 09.12.2018
Сообщений: 3
19.03.2019, 03:45 7
Добрый день.
У меня чем-то похожая ситуация.
Дано:
1-я таблица заказы
2-я таблица клиенты

Таблицы связаны по id_client

Задача вывести клиентов из таблицы клиентов, те которые совершили более 3 заказов в таблице заказов.

Надеюсь доступно написал. Спасибо.
0
solbrain
12 / 8 / 4
Регистрация: 14.03.2019
Сообщений: 35
Записей в блоге: 1
19.03.2019, 10:50 8
Цитата Сообщение от kipiwpartner Посмотреть сообщение
Добрый день.
У меня чем-то похожая ситуация.
Дано:
1-я таблица заказы
2-я таблица клиенты
Таблицы связаны по id_client
Задача вывести клиентов из таблицы клиентов, те которые совершили более 3 заказов в таблице заказов.
Надеюсь доступно написал. Спасибо.
T-SQL
1
select * from Клиенты where id_client in (select id_client from Заказы group by id_client having count(*) > 3)
0
19.03.2019, 10:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.03.2019, 10:50

Создание таймер с остановкой в определенный период времени
Всем Привет! Мне нужно написать программу-таймер, которая будет выводить пользователю сообщение...

Отчёт: найти все записи за определенный период времени
Всем привет ! Делаю отчёт, для него нужно найти все записи в период (дата 1)-(дата 2) и выписать в...

Запрос на количество обращений в определенный период
Помогите выполнить запросс количества обращений Клиентов за один день до дня рождения, в день...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru