2009-09-28 21 views
1

我有兩個表,索引1的電子郵件活動的詳細信息。第二張表詳細說明了這個活動的收件人,以及他們是否回覆了電子郵件等。在TBL1更新1個記錄時TBL2所有引用都等於給定值

我需要創建一個存儲過程,它可以在TBL1中更新'主記錄'的狀態,當所有引用(收件人)在TBL2中的狀態> 1。

爲了簡單表結構可以被假設爲是;

TBL1 

key | Title | Status(default 1) 


TBL2 

Key | TBL1_Key | Recipient | Status(default 0) 

所以基本上我需要做的是設置在TBL1每個記錄(每通電話最大100)的狀態(其中,其狀態已經是== 1)當TBL2所有相應記錄有「2」的> 1.

狀態的記錄是在TBL1.key = TBL2.TBL1_key

希望這是明確解釋,那你可以給我一些幫助鏈接。

一如既往....謝謝!!!!

回答

2
UPDATE tbl1 t1 
SET  status = 2 
WHERE status = 1 
AND  NOT EXISTS 
     (
     SELECT NULL 
     FROM tbl2 t2 
     WHERE t2.key = t1.key 
       AND t2.status <= 1 
     ) 
2

如果我正確理解你的需求,然後在TBL1的狀態可以從TBL2狀態值的。所以TBL1中的狀態是多餘的,可以省略。相反,您可以定義一個視圖,列出TBL1中的所有條目,並在其中包含另一列,根據TBL2上的條目計算狀態。你可以例如算上與狀態< 2項的數量TBL2並返回總體-2狀態時該數爲0等

+0

聽起來很有趣馬丁,如果你有時間,請你能不能給一個代碼示例?謝謝。 – Munklefish

相關問題