SQL Server:选择多个表/条件

时间:2012-07-24 11:05:57

标签: sql sql-server select join

好的,我对SQL Server的更高级用法相对较新。

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

例如:

Tab_Transcoders

ID, VideoCamID, InputStreamID, OutputStreamID.

其中InputStream链接到另一个表,其中我需要匹配的ID行,其中此行中的其他ID(例如StreamType_ID属于包含{{的第三个表1}}和ID_StreamType等。)

Description相同,与OutputStreamID相同。

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

VideoCamID

对我来说,我可以设置别名,例如ID, VideoCamID, InputStreamID, InputStreamType, InputStreamTypeDesc, OutputStreamID, OutputStreamType, OutputStreamDesc, VideoCamID, etc. etc. etc. & InputStreamID链接到列出所有Streams的同一个表(使用IP,Descs ..)

我可以像100 OutputStreamID S& SELECT S,但我认为这不合适。

我阅读了一些关于SUBSELECT等等的信息。但是我不知道我必须使用哪一个。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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 ..这很简单。

答案 2 :(得分:0)

我建议您阅读一些围绕CTE又名Common Table Expression的文章。

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

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