SQL Server:选择多个表/条件
好吧,我对SQL Server的更高级用法相对陌生。SQL Server:选择多个表/条件
我有几张表,我需要从中收集信息,其中几个表链接到其他表,我需要一个特定的信息。结果,我只想要一行所有的信息,优先使用别名命名。
例如:
Tab_Transcoders
:
ID, VideoCamID, InputStreamID, OutputStreamID.
其中InputStream
链接到另一个表,其中我需要的匹配ID
,其中该行中的其它的ID的行(例如StreamType_ID
属于一个第三个表格包含ID_StreamType
和Description
等)
与OutputStreamID
相同,与相同。
最后,我需要一个包含例如行:
ID, VideoCamID, InputStreamID, InputStreamType, InputStreamTypeDesc,
OutputStreamID, OutputStreamType, OutputStreamDesc, VideoCamID, etc. etc. etc.
它,我可以InputStreamID
& OutputStreamID
链接设置别名,例如到我所有的流是同桌对我很重要上市(与IP的,说明..)
我可以做到这一点,做像100 SELECT
S & SUBSELECT
S,但我不认为这是一个合适的方式。
我读了一些关于像CURSOR, UNION, FETCH, JOIN
等等的东西的信息,但我不知道哪一个我必须用于我的目的。
礼
我想你想要像下面....
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
我是没有完成写我的500000行查询,但似乎你的建议做了伎俩。非常感谢你! – user1450661 2012-07-24 11:27:21
如果你的表之间定义的关系,然后利用加入。 e.g客户订单
订单将有客户ID
Select Order.ID,Order.Quantity, Order.CustomerId, Customer.FullName, Customer.Address
From Orders Order
Join
Customer
On
Order.CustomerId = Customer.CustomerId
首先开始通过得到的数据使用联接两个表,然后,如果它的工作原理根据您的要求,在加入添加其他所需的表。
阅读关于SQl JOINS ..这很简单。
我会推荐你读一些关于CTE又名通用表表达式的文章。
参照http://msdn.microsoft.com/en-us/library/ms190766%28v=sql.105%29.aspx。
除此之外从不使用子查询。尝试使用内连接/任何其他连接如果可能的话。
听起来你需要阅读'JOIN's:http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html – Widor 2012-07-24 11:09:12