![](/img/trans.png)
[英]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.