簡體   English   中英

如何使用 SQL Server Management Studio 連接相關表中的數據?

[英]How do I concatenate data from related tables using SQL Server Management Studio?

我正在處理一個歷史數據庫,我們想要停用其中的一些表( EquipmentCapacity ),我有三個相關的表,我需要將Capacity表中的數據連接到Car表中。

-----------------        -----------------        -----------------
|  Car          |        |  Equipment    |        | Capacity      |
-----------------        -----------------        -----------------
|  CarId        |        |  CarId        |        | CapacityId    |
|  Make         |        |  EquipmentId  |        | EquipmentId   |
|  Model        |        |               |        | TotalSWL      |
|  SWL1         |        |               |        |               |
|  SWL2         |        |               |        |               |
-----------------        -----------------        -----------------

給你一些上下文, Car表可以有一個Equipment記錄,一輛汽車的每個Equipment記錄可以有很多Capacity記錄,通常只有兩個。

我想從值復制TotalSWLCapacitySWL1SWL2Car ,但我不知道如何通過查詢實現這一目標,並想知道如果有人能幫忙嗎?

例子

這是想要的結果。

來源

-------------------------------------------
| 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM