Я работаю с SQL Server 2008 R2.Сглаживание нормализованной базы данных SQL Server 2008 R2
У меня есть 3 стола, данные нормализованы, и я ищу, чтобы захватить телефон «Дом» и «Сотовый» для Боба Доула. Однако мне нужно получить только номер телефона с наивысшим номером каждого типа. (Ниже приведен пример Боб Доул, имеющие 2 сотовых телефоны и номер последовательности для каждого 2 и 3 соответственно)
Таблица PersonPhoneNumber
PersonPhoneNumberId Person PhoneNumberId PhoneNumberTypeId Sequence
Guid - vvv Bob Dole Guid - A 1 1
Guid - www Bob Dole Guid - B 2 2
Guid - xxx Bob Dole Guid - C 2 3
Таблица НомерТелефон
PhoneNumberId Number
Guid - A 111-111-1111
Guid - B 222-222-2222
Guid - C 333-333-3333
Таблица PhoneNumberType
PhoneNumberTypeId PhoneNumberType
1 Home
2 Cell
Мой желаемый результат будет (обратите внимание, что я вернулся только первый номер сотового.):
Person Home Cell
Bob Dole 111-111-1111 222-222-2222
У меня были проблемы, уплощение данные
Любая помощь с запросом будет будь здорово!
Что такое бизнес-правило, определяющее, что вы выбрали номер ячейки 222, а не номер ячейки 333 в приведенном выше примере? –
Бизнес-правило заключается в том, что пользовательский интерфейс позволяет пользователю назначать порядок последовательности. Таким образом, пользователь установил последовательность для 222-222-2222 как «2», а последовательность для 333-333-3333 - «3». Мы разрешаем пользователям перетаскивать или удалять телефонные номера на экране, эффективно определяя приоритет этих номеров. – Princess
Как в стороне, я думаю, что 'PhoneNumberTypeId' должен принадлежать таблице' PhoneNumber'. Или было бы целесообразно знать тип номера телефона, не зная самого номера? Или другой пример: если более одного человека разделили один и тот же номер, почему вы хотите указать тип номера для каждого из людей? –