Всякий раз, когда я создаю представление из 3 таблиц, оно дублирует все данные во всех строках. Я не понимаю, как объединить их, чтобы вместо дубликатов отображались нули. Можете ли вы указать мне в правильном направлении?
Вот сценарий:
- Таблица 1 = Учетные записи: имена учетных записей и идентификаторы учетных записей
- Таблица 2 = Свойства: описание свойства, адрес свойства и идентификатор учетной записи
- Таблица 3 = Транспортные средства: марка транспортного средства, модель транспортного средства и идентификатор учетной записи
Данные выглядят примерно так:
[Table 1= Accounts]
id name accountid
1 Family A account001
2 Family B account002
3 Family C account003
[Table 2= Properties]
id accountid description address
1 account001 home california
2 account001 beach mexico
3 account002 hideout arizona
4 account002 getaway nevada
5 account002 skilodge idaho
6 account 003 home texas
[Table 3= Vehicles]
id description make model accountid
1 green Acura Integra account001
2 blue Aston Martin Vantage account001
3 silver Audi Quattro account001
4 work Bently Continental GTC account002
5 kids Ford Fusion Hybrid account002
6 Mom's Car Land Rover LR4 account003
7 Paper Weight Mini Clubman account003
8 Beater Dodge Caliber account003
9 Why Mahindra TR40 account003
10 Kids Scion xB account003
Я хочу создать представление, которое показывает мне все записи в БД. Для каждой строки я хотел бы показать имя учетной записи, а затем данные из таблиц.
Я ищу представление для возврата результатов, которые выглядят следующим образом: Где оно просто не отображает данные в строке, если эти данные не пришли в столбец, который он запрашивал в данный момент.
account_Name | property_DESCRIPTION | property_ADDRESS | vehicles_DESCRIPTION vehicles_MAKE | vehicles_MODEL
- Family A home california **null null null**
- Family A beach mexico **null null null**
- Family A **null null** blue Aston Martin Vantage
- Family A **null null** silver Audi Quattro
- Family B hideout arizona **null null null**
- Family B getaway nevada **null null null**
- Family B skilodge idaho **null null null**
- Family B **null null** kids Ford Fusion Hybrid
Но вместо этого он отображает дубликаты данных, как показано ниже, где каждый раз, когда он находит новые записи, он заполняет строку данными из других таблиц.
account_Name property_DESCRIPTION property_ADDRESS vehicles_DESCRIPTION vehicles_MAKE vehicles_MODEL
- Family A home california green Acura Integra
- Family A beach mexico green Acura Integra
- Family A home california blue Aston Martin Vantage
- Family A beach mexico blue Aston Martin Vantage
- Family A home california silver Audi Quattro
- Family A beach mexico silver Audi Quattro
- Family B hideout arizona work Bently Continental GTC
- Family B getaway nevada work Bently Continental GTC
- Family B skilodge idaho work Bently Continental GTC
- Family B hideout arizona kids Ford Fusion Hybrid
- Family B getaway nevada kids Ford Fusion Hybrid
- Family B skilodge idaho kids Ford Fusion Hybrid
Почему это происходит, мне кажется, имеет смысл; все дело в стыках. Как будто соединения чувствуют, что им действительно нужно отображать данные независимо от стоимости. Думая с точки зрения сценариев, кажется, что вместо объединений мне нужно прокручивать таблицу по отдельности, а затем объединять полученные циклы вместе.
По сути, мне нужно, чтобы представление сначала отображало все записи из таблицы 1, затем все записи из таблицы 2, затем все записи из таблицы 3. Я действительно не хочу объединять эти данные вместе; Я просто хочу увидеть все это в одном представлении.
Может ли кто-нибудь подсказать мне, как создать желаемое представление выше, которое показывает нули вместо дубликатов?
Это на SQL 2008 R2 Enterprise.
union all
- person Martin Smith   schedule 18.02.2011