好的,我对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
等等的信息。但是我不知道我必须使用哪一个。
利
答案 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。
除此之外从不使用子查询。如果可能,尝试使用内部联接/任何其他联接。