2013-04-25 64 views
0

我有一個運行MS-SQL 2008的Windows服務器。SQL,從表A中選擇並使用結果ID循環表B?

我有一個客戶表,我需要選擇活動,暫掛或暫停的所有客戶的ID。

得到是Y =當前活動的客戶H =保持S中的所有客戶=暫停

select id from customer where active = 'Y'; 

上述聲明選擇受影響的客戶的ID的正常工作。

我需要使用這些結果來循環,雖然下面的命令,以找出房價所有受影響的客戶都有。

得到所有費率爲客戶

select rgid from custrate where custid = [loop though changing this id with results from first statement]; 

從客戶表中的ID從custrate表中的客戶ID一致。

所以最終我需要所有受影響的客戶ID的列表,什麼RGID的(率組(S))他們。

+0

從來不認爲通過記錄循環,即有嚴重執行系統的方式。你需要考慮數據集而不是個人記錄。在您有資格查詢數據庫之前,您需要學習這些內容。 – HLGEM 2013-04-25 19:37:20

回答

2

SQL是不是在一般的循環,而是你推想到的連接。

select customer.id, custrate.rgid, customer.active 
from customer 
inner join custrate 
    on customer.id = custrate.custid 
where active in ('Y', 'H', 'S") 
order by customer.active, customer.id 

將是一個需要思考的出發點。然而,這只是一個瘋狂的猜測,因爲模式沒有被指定,也沒有表格之間的關係。

+0

這兩個表位於相同的數據庫內。這些表的唯一共同之處就是客戶表中的id與custtable表的custid一致......我知道sql不像大多數其他語言的語法那樣循環任何東西。因此,我對這個問題感到困惑。是否有其他信息可以幫助解釋模式?所以,除非我不明白你張貼的語法,我不認爲它會工作,但生病去檢查 – snowkiterdude 2013-04-25 17:51:00

+0

的RGID不在客戶表只custrate表。 – snowkiterdude 2013-04-25 17:58:43

+0

如果知道鏈接ID是customer.id = custrate.custid,那麼提供的語法應爲您的要求(客戶ID和RateIDs)工作。如果沒有,提供表結構(或子集)會有所幫助。請注意,上面我不假定rgid在客戶表中,而是在select中調用custrate.rgid。 – Godeke 2013-04-25 17:59:09

相關問題