繁体   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