2017-06-23 5 views
0

![expected result that i want ]1私は、MS SQLサーバで複数のテーブルを結合しようとしています

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サーバで複数のテーブルを結合し。

  1. 建物
  2. 部屋
  3. 資産
  4. コンポーネント

私は複数のテーブルからレコードをしたい: 私は5つのテーブルを持っています。

  • 私はbd.BuildingIDbd.[Building Description]をしたいと私はbd.BLDID = fl.BLDIDに入社し、それらの両方が共通BLIDを持っています。私は、私も私が知っているasse.AssetNamecmp.ComponentName(両方のテーブルに共通AssetIDを持っている)

をしたいと資産コンポーネントに参加したいrm.Roomrm.[Room Description]、およびrm.[Room_Type]

  • をしたいと私はfl.FLID = rm.FLIDに入社
  • 上記のクエリは最後の2行のために機能しません。

    は、誰もがこれを達成することができるの参加方法を提案することはできますか?コメントパー

  • +1

    ことができますが、[編集](https://stackoverflow.com/posts/44730998/edit)あなたの質問とサンプルデータと期待resaultsを追加? – Sami

    +1

    Assetsはどのフィールドで他のテーブルの1つに結合できますか?それはROOMIDかそういったものがありますか?その場合は、「Asset join asse」の後に追加する必要があります。 – Bartez

    +0

    @Bartez資産は、それらの両方が共通のこのフィールドを持っているようAssetIDを使用して(コンポーネント)他のテーブルと結合することができます。 –

    答えて

    0

    、我々は完全にあなたの質問に答えるために、データベースで使用可能だったどのフィールドを知っている必要があると思います。

    アセットには資産が含まれている可能性が高いため、資産には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; 
    
    +0

    sir john:アセットにはRMIDがありません。アセットIDはコンポーネントテーブルと一致します。 –

    +0

    @SalmanAbdulKarim 'Assets'テーブルは、他のどの列がありますか?これは、/ 'Rooms'テーブルにそれを結ぶだけでIDが' Components'表との結合に影響を及ぼさないだろうより多くの列を持つことになります。 – JohnLBevan

    +0

    あなたが不明な場合は、以下のSQLを実行して質問に結果を追加してください。これはあなたのテーブル構造についてもっと学ぶのに役立ちます/私たちがあなたの質問に答えることを可能にするでしょう。 't.name、c.nameを選択する sys.tablesから 内部結合sys.columns c on c.object_id = t.object_id ここで、t.name in( 'Buildings'、 'Floors'、 'Rooms' t.name、Cによって、 '資産') ため。名前 " – JohnLBevan

    関連する問題