Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Обучение азам.Нужна помощь!  [new]
illya_nub
Member

Откуда:
Сообщений: 2
Здравствуйте! Пишу Вам как корифеям в области.

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

Схема БД в приложении,саму БД не знаю как прикрепить.
Попытаюсь описать словами,там только связи важны. Таблица "Организации" связана с таблицей "Клиенты" так(PK-ОрганизацииID - FK-KлиентID) далее там вроде понятно что к чему. Буду очень признателен за любую активность в моём направлении! Очень нужно именно разобраться и понять что и как.

К сообщению приложен файл. Размер - 118Kb
19 мар 17, 20:46    [20311471]     Ответить | Цитировать Сообщить модератору
 Re: Обучение азам.Нужна помощь!  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37155
И что не получается?
19 мар 17, 23:20    [20311833]     Ответить | Цитировать Сообщить модератору
 Re: Обучение азам.Нужна помощь!  [new]
aleksrov
Member

Откуда:
Сообщений: 948
Какая та странная схема. В таблице Клиенты PK по МенеджерКлиентаID, но у одного менеждеоа может быть несколько клинтов, так? Тогда мне кажется PK должен быть по МенеджерКлиентаID, КлиентID. Информация о сотудниках вынесена отдельно, а менеджер это не сотрудник? По сути 2 раза дублируете информацию о телефоне. Если у клиента может быть только один менеждер, то таблицу клинты и организации можно обьеденить, сделав PK_IDКлиент. Также если у клинта только один мененжер информацию о менеджере убрать из заказов, а при необходимости ее получим из таблица клиенты, которая будет связано с таблицей сотрудники. И много чего еще.
20 мар 17, 07:23    [20312179]     Ответить | Цитировать Сообщить модератору
 Re: Обучение азам.Нужна помощь!  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20974
aleksrov
Если у клиента может быть только один менеждер
Не может. Манагеру надо на больничном посидеть или там в отпуск сходить... и если в этот период клиента прокатить с заказом, потому что не тот манагер, то очень скоро таблица клиентов опустеет...

Схему - в мусор. Читать теорию по анализу предметной области. Пока не усвоится - за схему можно даже не браться, всё равно на выброс получится.
20 мар 17, 08:22    [20312227]     Ответить | Цитировать Сообщить модератору
 Re: Обучение азам.Нужна помощь!  [new]
aleksrov
Member

Откуда:
Сообщений: 948
Akina,

Ну да, что то я про отпуска и больничные для менеджеров забыл :)
А схема да, ни о чем.
20 мар 17, 08:30    [20312239]     Ответить | Цитировать Сообщить модератору
 Re: Обучение азам.Нужна помощь!  [new]
angro
Member

Откуда:
Сообщений: 389
illya_nub,

так примерно

select
организации.название,
count(заказы.менеджерклиентаid)
from заказы
left join клиенты
on клиенты.менеджерклиентаid = заказы.менеджерклиентаid
left join организации
on клиенты.клиентid = организации.организацииid
group by организации.название
having count(заказы.менеджерклиентаid)>5
20 мар 17, 10:27    [20312722]     Ответить | Цитировать Сообщить модератору
 Re: Обучение азам.Нужна помощь!  [new]
aleksrov
Member

Откуда:
Сообщений: 948
angro,

Да забейте, с этой схемой любой запрос будет корявым.
К примеру мне нужно посмотреть какой товар вообще был куплен, т.е. таблицу заказы мне нужно обьеденить с таблицей заказано товаров, потом ее с таблицей склад, а потом еще из отдельной таблицы которая тоже нафиг не нужна вытащить наименование, бред!
20 мар 17, 10:36    [20312778]     Ответить | Цитировать Сообщить модератору
 Re: Обучение азам.Нужна помощь!  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8350
Плохая организация хранения, содержит и избыточности и противоречия. Например, зачем состояние заказа вынесли отдельно? У заказа может быть несколько состояний одновременно или вы обрабатываете миллионы заказов он-лайн?
20 мар 17, 11:07    [20312971]     Ответить | Цитировать Сообщить модератору
 Re: Обучение азам.Нужна помощь!  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31783
Владислав Колосов
Плохая организация хранения, содержит и избыточности и противоречия. Например, зачем состояние заказа вынесли отдельно? У заказа может быть несколько состояний одновременно или вы обрабатываете миллионы заказов он-лайн?
Это просто справочник. Разве по другому делают?
aleksrov
Да забейте, с этой схемой любой запрос будет корявым.
К примеру мне нужно посмотреть какой товар вообще был куплен, т.е. таблицу заказы мне нужно обьеденить с таблицей заказано товаров, потом ее с таблицей склад, а потом еще из отдельной таблицы которая тоже нафиг не нужна вытащить наименование, бред!
Да, с товарами и складами напутано до уровня "непригодно" :-)
Правда, для вопроса ТС эти таблицы не нужны.
20 мар 17, 19:15    [20315327]     Ответить | Цитировать Сообщить модератору
 Re: Обучение азам.Нужна помощь!  [new]
illya_nub
Member

Откуда:
Сообщений: 2
Спасибо Вам! Разобрался....Был с самого начало прав,но ввиду анскильности тупил на ровно месте.... Вот запрос, решающий эту задачу : В MSSMS
+
SELECT Название
FROM Организации
WHERE ОрганизацииID IN
(SELECT КлиентID
FROM Заказы, Клиенты
WHERE Клиенты.МенеджерКлиентаID=Заказы.МенеджерКлиентаID
GROUP BY КлиентID
HAVING COUNT(КлиентID)>5)
20 мар 17, 20:51    [20315574]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить