[英]How do I make a composite key with SQL Server Management Studio?
[英]How do I concatenate data from related tables using SQL Server Management Studio?
我正在处理一个历史数据库,我们想要停用其中的一些表( Equipment
、 Capacity
),我有三个相关的表,我需要将Capacity
表中的数据连接到Car
表中。
----------------- ----------------- -----------------
| Car | | Equipment | | Capacity |
----------------- ----------------- -----------------
| CarId | | CarId | | CapacityId |
| Make | | EquipmentId | | EquipmentId |
| Model | | | | TotalSWL |
| SWL1 | | | | |
| SWL2 | | | | |
----------------- ----------------- -----------------
给你一些上下文, Car
表可以有一个Equipment
记录,一辆汽车的每个Equipment
记录可以有很多Capacity
记录,通常只有两个。
我想从值复制TotalSWL
在Capacity
为SWL1
和SWL2
的Car
,但我不知道如何通过查询实现这一目标,并想知道如果有人能帮忙吗?
例子
这是想要的结果。
来源
-------------------------------------------
| CapacityId | EquipmentId | TotalSWL |
-------------------------------------------
| 1 | 2 | 100 |
| 2 | 2 | 50 |
-------------------------------------------
目的地
-------------------------------------------------
| CarId | Make | Model | SWL1 | SWL2 |
-------------------------------------------------
| 123 | Ford | Fiesta | 100 | 50 |
-------------------------------------------------
您可以使用以下方法获得两个值:
select c.*, ec.swl1, ec.swl2
from car c join
(select e.carid, max(c.TotalSWL) as swl1,
nullif(min(TotalSWL), max(TotalSWL)) as swl2
from equipement e join
capacity c
on e.equipmentid = c.equipmentid
group by e.carid
) ec
on ec.carid = c.carid;
编辑:
我确实看到问题要求更新:
update c
set swl1 = ec.swl1,
swl2 = ec.swl2
select c.*, ec.swl1, ec.swl2
from car c join
(select e.carid, max(c.TotalSWL) as swl1,
nullif(min(TotalSWL), max(TotalSWL)) as swl2
from equipement e join
capacity c
on e.equipmentid = c.equipmentid
group by e.carid
) ec
on ec.carid = c.carid;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.