Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2014, 15:19   #1
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию Access 2003. Создание запроса.

Всем привет.
Имеется набросок примитивной БД на Access, буквально из трех таблиц.
Код:
Клиенты (Код_клиента, фио, телефон_клиента)
Услуги (Код_услуги, наименование_услуги, цена_услуги)
Заказы (Код_клиента, Код_услуги, дата_заказа)
Стоит задача: создать запрос, который бы выводил информацию:
Код:
какой клиент принес максимальную прибыль компании и чему она равна
т.е. ответ типа:
Код:
Иванов Иван - 5000 р.
Подсчитать прибыль от каждого клиента у меня получается

Для этого я:
Код:
создаю запрос, используя поля "ФИО" и "цена_услуги",
использую группировку по ФИО,
использую статистическую сумму для поля "цена_услуги"
а вот дальше...?

ни усовершенствовать этот запрос, ни использовать этот запрос, как источник сведений для другого не получается (

прикладываю бд
Вложения
Тип файла: rar бд.rar (50.4 Кб, 12 просмотров)
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.

Последний раз редактировалось Niro; 22.09.2014 в 15:22.
Niro вне форума Ответить с цитированием
Старый 22.09.2014, 16:32   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

такой запрос устроит?

Код:
SELECT TOP 1 ФИО_клиента, sum(Услуга.Цена_услуги) as SumByKlient  
 FROM Услуга, Заказы,   Клиент 
 where  Заказы.Код_заказа_з = Услуга.Код_услуги
      and Заказы.Код_клиента_з  = Клиент.Код_клиента
 group by  Клиент.Код_клиента, Клиент.ФИО_клиента
 order by  2 desc
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.09.2014, 17:05   #3
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

Большое спасибо, Серж, вы как всегда меня выручаете)

Мои познания в SQL - никакие, но насколько я понял используется следующая идея:
отсортировать по убыванию, и вывести первое значение...
Я прав?
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.

Последний раз редактировалось Niro; 22.09.2014 в 17:08.
Niro вне форума Ответить с цитированием
Старый 22.09.2014, 17:16   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Есть один нюанс - максимальная прибыль не от одного, а от нескольких клиентов. Тогда нужно найти этот максимум и выдернуть тех клиентов, от которых прибыль равна этому максимуму
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.09.2014, 00:18   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Аватар, Вы абсолютно правы. Если есть необходимость показать всех покупателей, набравших максимальную сумму (одну и ту же, разумеется), то мой вариант запроса не подойдёт, нужно доработать его!

Цитата:
Сообщение от Niro
Я прав?
так точно. Вы правы!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание запроса к БД в Access Urbic Microsoft Office Access 7 26.03.2013 03:55
Создание и настройка ролей в MS Access 2003. Как это сделать? Вадим Мошев Microsoft Office Access 4 31.01.2011 14:50
Как подключить бд MS Access 2003 без установки MS Access 2003. ShaevMV БД в Delphi 1 15.09.2010 14:19
Access создание запроса и таблички Evgen_31 Microsoft Office Access 1 29.06.2009 16:49
Access 2003 создание таблицы для перевозки пассажиров John_Mnemonic Microsoft Office Access 0 15.04.2009 22:06