Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ms sql server中连接多个表_Sql_Sql Server_Database_Join - Fatal编程技术网

在ms sql server中连接多个表

在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(两个

我正在尝试连接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
      (两个表都有一个公共的
      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。@SalmanAbdulKarim
    Assets
    表还有哪些列?它将有更多的列,而不仅仅是一个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;