【问题标题】:joining multiple table in ms sql server在 ms sql server 中加入多个表
【发布时间】:2017-06-23 22:58:25
【问题描述】:

![expected result that i want ]1

select 
bd.BuildingID , 
bd.[Building Description] , 
fl.Floor , 
rm.Room,
rm.[Room Description],
rm.[Room Type],
asse.AssetName,
cmp.ComponentName
from Buildings bd 
join Floors fl
on bd.BLDID = fl.BLDID
join Rooms rm
on fl.FLID = rm.FLID
join Assets asse 
join Components cmp
on cmp.AssetID=asse.AssetID;

我正在尝试在 ms sql server 中加入多个表。 我有 5 张桌子:

  1. 建筑物
  2. 楼层
  3. 房间
  4. 资产
  5. 组件

我想要来自多个表的记录。

  • 我想加入bd.BLDID = fl.BLDID bd.BuildingIDbd.[Building Description] 和他们都有共同的BLID
  • 我想加入fl.FLID = rm.FLIDrm.Roomrm.[Room Description]rm.[Room_Type]
  • 我想加入资产和组件以及我想要asse.AssetNamecmp.ComponentName(两个表都有一个共同的AssetID

由于最后两行,我知道上面的查询不起作用。

谁能建议如何完成这个连接?

【问题讨论】:

  • 你能edit你的问题并添加示例数据和预期结果吗?
  • 资产可以在哪个字段上连接到其他表之一?它有 ROOMID 或类似的东西吗?在这种情况下,您应该在“join Assets asse”之后添加。
  • @Bartez 资产可以使用 AssetID 与其他表(组件)连接,因为它们都有共同的这个字段。

标签: sql sql-server database join


【解决方案1】:

对于每个 cmets,我们需要知道您的数据库中有哪些可用字段才能完全回答您的问题。

我猜想,资产可能存放在一个房间里,因此资产上可能有一个RoomId 值(或RMID,考虑到似乎已经存在的命名约定)。

如果是这样的话,这样的事情应该可以工作:

select bd.BuildingID 
, bd.[Building Description] 
, fl.Floor 
, rm.Room
, rm.[Room Description]
, rm.[Room Type]
, asse.AssetName
, cmp.ComponentName
from Buildings bd 
inner join Floors fl
on bd.BLDID = fl.BLDID
inner join Rooms rm
on fl.FLID = rm.FLID
inner join Assets asse

on asse.RMID = rm.RMID --added this line

inner join Components cmp
on cmp.AssetID=asse.AssetID;

【讨论】:

  • 约翰爵士:资产没有 RMID,它只有我想与组件表匹配的资产 ID,因为在组件中我们有资产 ID。
  • @SalmanAbdulKarim Assets 表还有哪些其他列?它将拥有比 ID 更多的列 / 将其加入 Rooms 表不会影响与 Components 表的连接。
  • 如果您不确定,请运行以下 SQL 并将结果添加到您的问题中;这应该有助于我们更多地了解您的表格结构/希望我们能够回答您的问题。 select t.name, c.name from sys.tables t inner join sys.columns c on c.object_id = t.object_id where t.name in ('Buildings','Floors','Rooms','Assets') order by t.name, c.name
  • 亲爱的约翰爵士:我添加了图片请检查它
  • 我看不到;唯一可见的图像是您想要的输出;不是上述查询的结果。
猜你喜欢
  • 1970-01-01
  • 2011-04-12
  • 1970-01-01
  • 2015-10-10
  • 2019-10-05
  • 2011-04-28
  • 1970-01-01
  • 2015-12-03
  • 1970-01-01
相关资源
最近更新 更多