2012-07-24 92 views
0

好吧,我对SQL Server的更高级用法相对陌生。SQL Server:选择多个表/条件

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

例如:

Tab_Transcoders

ID, VideoCamID, InputStreamID, OutputStreamID. 

其中InputStream链接到另一个表,其中我需要的匹配ID,其中该行中的其它的ID的行(例如StreamType_ID属于一个第三个表格包含ID_StreamTypeDescription等)

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等等的东西的信息,但我不知道哪一个我必须用于我的目的。

+0

听起来你需要阅读'JOIN's:http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html – Widor 2012-07-24 11:09:12

回答

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 
+0

我是没有完成写我的500000行查询,但似乎你的建议做了伎俩。非常感谢你! – user1450661 2012-07-24 11:27:21

0

如果你的表之间定义的关系,然后利用加入。 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 ..这很简单。