0

さて、私は SQL Server のより高度な使用に比較的慣れていません。

情報を収集する必要があるいくつかのテーブルがあり、これらのテーブルのいくつかは、特定の情報が必要な他のテーブルにリンクしています。その結果、すべての情報を含む 1 つの行だけが必要になり、別名で優先的に名前が付けられます。

例えば:

Tab_Transcoders:

ID, VideoCamID, InputStreamID, OutputStreamID.

InputStream一致する の行が必要な別のテーブルへのリンク、IDこの行には他の ID があります (たとえば、 andなどStreamType_IDを含む 3 番目のテーブルに属します)。ID_StreamTypeDescription

と同じOutputStreamID、同じVideoCamID

最後に、たとえば次を含む行が必要です。

ID, VideoCamID, InputStreamID, InputStreamType, InputStreamTypeDesc, 
OutputStreamID, OutputStreamType, OutputStreamDesc, VideoCamID, etc. etc. etc.

エイリアスを設定できることが重要です。たとえばInputStreamIDOutputStreamIDすべてのストリームがリストされている同じテーブルにリンクします(IP、説明付き..)

これは 100 SELECTS & SUBSELECTS のように実行できますが、適切な方法ではないと思います。

etc. etc.. などの情報を読みCURSOR, UNION, FETCH, JOINましたが、目的のためにどれを使用する必要があるかわかりません。

エリ

4

3 に答える 3

0

次のようなものが欲しいと思います。

Select 
      t.ID,
      t.VideoCamID, 
      i.InputStreamID, 
      is.StreamType as InputStreamType, 
      is.StreamDesc as InputStreamDesc,
      o.OutputStreamID, 
      os.StreamType as OutputStreamType,
      os.StreamDesc as OutputStreamDesc,
      v.VideoCamID

from 
     Tab_Transcoders t
     inner join InputStreams i on i.InputStreamID=t.InputStreamId
     inner join Streams is on is.StreamId=i.StreamId
     inner join OutputStreams o on o.OutputStreamId=t.OutputStreamId
     inner join Streams os on os.StreamID=o.StreamId
     inner join VideoCams v on v.VideoCamId=t.VideoCamID
于 2012-07-24T11:11:29.297 に答える
0

テーブル間に定義された関係がある場合は、結合を使用します。例:顧客注文

注文には顧客IDが含まれます

Select Order.ID,Order.Quantity, Order.CustomerId, Customer.FullName, Customer.Address
From Orders Order
Join
Customer
On
Order.CustomerId = Customer.CustomerId

まず、結合を使用して2つのテーブルからデータを取得し、それが要件どおりに機能する場合は、結合に別の必要なテーブルを追加します。

SQlJOINSについて読んでください。それはかなり簡単です。

于 2012-07-24T11:11:33.667 に答える
0

CTE、別名CommonTableExpressionに関する記事を読むことをお勧めします。

http://msdn.microsoft.com/en-us/library/ms190766%28v=sql.105%29.aspxを参照してください。

これとは別に、サブクエリは使用しないでください。可能であれば、内部結合/その他の結合を使用してみてください。

于 2012-07-24T11:11:52.080 に答える