2012-09-28 55 views
2

功能性拉鍊我有關聯這兩個表,我基本上想寫如何表達在SQL

for r1, r2 in zip(table1, table2): 
    ... 

我如何做到這一點?在存儲過程中,我需要急於解決現有的代碼看起來是這樣的

cursor = select ... where table1.x = table2.x; # implied join 
for row in cursor: 
    ... 

這是當然的邏輯就像兩個嵌套的for循環。當我想要做的就是對現有代碼進行各種麻煩的時候,將兩個表按列中的列排序,然後保留現有的邏輯。

+1

也許我一直生活在一塊石頭下,但我不熟悉任何zip功能。你在談論這方面的事情嗎? http://community.bartdesmet.net/blogs/bart/archive/2008/11/03/c-4-0-feature-focus-part-3-intermezzo-linq-s-new-zip-operator.aspx – LittleBobbyTables

+1

「zip」在SQL中究竟意味着什麼?我從來沒有聽說過。 –

+1

請添加一些示例數據和預期輸出。 –

回答

0

你的選擇可能會是這個樣子:

select * 
from table1 t1 
join table2 t2 
    on t1.x = t2.x 

不過,我不知道你爲什麼在這裏需要使用遊標。也許你正試圖循環這些?遊標必須被聲明,打開,關閉和釋放以避免處理泄漏。語法可能因數據庫而異。以下是一些示例(MS)T-SQL,以幫助您入門。

declare z_cur cursor for 
    select t1.x, t2.y 
    from table1 t1 
    join table2 t2 
     on t1.x = t2.x 

declare @xVal varchar(100) 
    , @yVal varchar(100) 

open z_cur 
fetch next from z_cur into @xVal, @yVal 

while @@fetch_status = 0 
begin 
    -- do stuff here 
    fetch next from z_cur into @xVal, @yVal 
end 

close z_cur 
deallocate z_cur