在ms sql server中连接多个表
我正在尝试连接ms sql server中的多个表。 我有5张桌子:在ms sql server中连接多个表,sql,sql-server,database,join,Sql,Sql Server,Database,Join,我正在尝试连接ms sql server中的多个表。 我有5张桌子: 建筑物 地板 房间 资产 组成部分 我想要多个表中的记录 我加入了bd.BLDID=fl.BLDID作为我想要的bd.BuildingID和 bd.[Building Description]并且两者都有公共的BLID 我加入了fl.FLID=rm.FLID我想要的rm.Room,rm.[房间描述],和rm.[房间类型] 我想要加入资产和组件,以及我想要asse.AssetName和 cmp.ComponentName(两个
- 我加入了
作为我想要的bd.BLDID=fl.BLDID
和bd.BuildingID
并且两者都有公共的bd.[Building Description]
BLID
- 我加入了
我想要的fl.FLID=rm.FLID
,rm.Room
,和rm.[房间描述]
rm.[房间类型]
- 我想要加入资产和组件,以及我想要
和asse.AssetName
(两个表都有一个公共的cmp.ComponentName
)AssetID
有人能建议如何完成此连接吗?根据评论,我们需要知道数据库中的哪些字段可用,才能完全回答您的问题 猜测一下,我会说资产可能存放在一个房间里,因此资产上可能有
RoomId
值(或者RMID
,因为命名约定似乎已经到位)
如果是这样的话,像这样的方法应该会奏效:
选择bd.BuildingID
,bd.[建筑物说明]
,楼
,客房
,rm.[房间说明]
,rm.[房间类型]
,asse.AssetName
,cmp.ComponentName
屋宇署
内连接楼板
在bd.BLDID=fl.BLDID上
内部连接室
在fl.FLID=rm.FLID上
内部联接资产资产
在asse.RMID=rm.RMID上——添加了此行
内连接组件
在cmp.AssetID=asse.AssetID上;
您可以提出问题并添加示例数据和预期结果吗?在哪些字段上,资产可以与其他表之一联接?有室友之类的吗?在这种情况下,您应该在“join Assets asse”之后添加这一点。@Bartez Assets可以使用AssetID与其他表(组件)连接,因为这两个表都有相同的字段。sir john:asset没有RMID,它只有我想与组件表匹配的资产id,,因为在组件中,我们有资产id。@SalmanAbdulKarimAssets
表还有哪些列?它将有更多的列,而不仅仅是一个ID/将其连接到房间
表不会影响与组件
表的连接。如果您不确定,请运行以下SQL并将结果添加到您的问题中;这将有助于我们进一步了解您的表结构/希望我们能够回答您的问题<代码>从sys.tables中选择t.name,c.name t internal join sys.columns c on c.object_id=t.object_id,其中t.name in('Buildings','flowers','Rooms','Assets')按t.name,c.name排序亲爱的约翰爵士:我添加了pic plz check,但我看不到它;唯一可见的图像是所需的输出;不是上述查询的结果。
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;