2012-07-24 213 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 ..這很簡單。