【发布时间】:2011-06-29 21:31:05
【问题描述】:
每当我创建 3 个表的视图时,它都会复制所有行上的所有数据。我不知道如何加入这些,以便它显示空值而不是重复值。你能指出我正确的方向吗?
这是场景:
- 表 1 = 帐户:帐户名称和帐户 ID
- 表 2 = 属性:属性描述、属性地址和帐户 ID
- 表 3 = 车辆:车辆制造商、车辆型号和帐户 ID
数据看起来像这样:
[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 上。
【问题讨论】:
-
发布您正在使用的 SQL 怎么样...?
-
将帐户加入属性为 Vehicles 中的列添加 NULL 值。将 Accounts 加入 Vehicles 为 Properties 中的列添加 NULL 值。将两者与
union all结合起来 -
马丁感谢您的回复。原来你说的正是我需要做的。
标签: sql-server sql-server-2008 join view duplicates