2010-11-05 34 views
0


我需要一些幫助來獲取以我需要的方式運行的SQL查詢。我知道你的sql大師會對此大笑,但我真的不知道該怎麼做:-(
我在一個MS-SQL數據庫中有兩個表。一個是工作人員,另一個是合同他們處於一對多的關係,即一個工人可以有零個或多個合同
合同發生了變化,所有工人都被要求籤署新的合同 我需要得到的是所有尚未簽署新合同的工作人員,這是誰在某一日期後沒有合同,我試過使用左外連接,但它沒有工作:-(
如何在T-SQL中編寫複雜的主詳細查詢

這些是關鍵表中的列:

工人:
WorkerID
名字
姓氏
...

合同:
ContractID
日期
WorkerID
金額
...

任何幫助,非常感謝。
謝謝。
Trex公司

回答

3
select w.WorkerID, w.Firstname, w.LastName 
from Workers w 
left outer join Contracts c on w.WorkerID = c.WorkerID 
    and c.Date > @MyDate 
where c.WorkerID is null 
0

使用子查詢:

select * from Workers where WorkerID not in 
(select distinct WorkerID from Contracts where Date > @myDate) 
+0

爲什麼這是低票? – GendoIkari 2010-11-05 17:31:38

0

與子查詢堅持,但包括日期:

SELECT * from Workers where WorkerID not in 
(SELECT DISTINCT WorkerID FROM CONTRACTS WHERE Date > @MyDate) 

其中@MyDate是你的某個日期之後,合同改變了。

+0

我編輯後立即包括日期過濾器後張貼。 – GendoIkari 2010-11-05 17:34:39

+0

我明白了。但是直到我發佈我的內容後,我纔看到編輯。 – 2010-11-05 17:38:04

+0

有人請解釋爲什麼subquerying被低估。 – GendoIkari 2010-11-05 17:40:10