0

好的,我对 SQL Server 的更高级用途还比较陌生。

我有几个表需要从中收集信息,其中几个表链接到我需要特定信息的其他表。结果,我只想要一行包含所有信息,优先使用别名命名。

例如:

Tab_Transcoders

ID, VideoCamID, InputStreamID, OutputStreamID.

在哪里InputStream链接到另一个表,我需要匹配的行ID,在此行中是其他 ID(例如StreamType_ID,属于包含等的第三个ID_StreamTypeDescription

与 相同OutputStreamID,与 相同VideoCamID

最后,我需要一行包含例如:

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

对我来说重要的是我可以设置别名,例如InputStreamID&OutputStreamID链接到列出我的所有 Streams 的同一个表(带有 IP、Descs ..)

我可以通过做 100 个SELECTS & SUBSELECTS 来实现这一点,但我认为这不是合适的方式。

我阅读了一些关于诸如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

首先使用连接从两个表中获取数据,然后如果它按照您的要求工作,则在连接中添加另一个所需的表。

阅读有关 SQl JOINS 的信息。它相当简单。

于 2012-07-24T11:11:33.667 回答
0

我会推荐你​​阅读一些关于 CTE aka Common Table Expression 的文章。

请参阅http://msdn.microsoft.com/en-us/library/ms190766%28v=sql.105%29.aspx

除此之外,永远不要使用子查询。如果可能,尝试使用内部联接/任何其他联接。

于 2012-07-24T11:11:52.080 回答