2014-06-11 78 views
0

完全符合我可以在臨時表和諸如此類的東西難看的存儲過程做到這一點,但我知道有經驗的開發人員可以做這麼多比優雅我所拿出來。事實上,我寧願不必調用存儲過程,但只需要一個查詢就可以獲得我需要的信息。SQL查詢 - 從T1選擇值,其中第二個值T2

我有兩個表的工作:

  • T1 BillingDirectivesNeeded
  • T2 BillingDirectives。

T1具有與此任務相關兩個領域 -

  • PKEY
  • WBS1。

會有每個WBS1相關的許多PKeys。

T2只有一個感興趣

  • PKEY場。

我試圖解決的任務是創建一個WBS1s的列表,它在T2中具有所有他們需要的指令之前,我啓用它們的導入。

我們要導入只有當所有的PKeys爲WBS1在T2中找到一個WBS1。如果沒有,我會讓它們變灰。

我已經嘗試了十幾種不同的方式來獲得這樣的事情發生在過去的幾個小時,我似乎有心理障礙。僞代碼會是這個樣子:

select T1.WBS1 from BillingDirectiveNeeded T1 
where [all the T1.PKeys for T1.WBS1 can be found in BillingDirectives T2] 

回答

2

您可以嘗試使用Where Exists條款:

Select  T1.WBS1 
From  BillingDirectiveNeeded T1 
Where Exists 
(
    Select 1 
    From BillingDirectives T2 
    Where T2.PKey = T1.PKey 
) 
+0

我知道我在做這個難度比它需要的是。我編了一個15個職位的測試,其中五個失蹤,這給了我現有的十個職位。感謝Siyual! – DJGray

1
select DISTINCT T1.WBS1 from BillingDirectiveNeeded T1 where T1.PKey in (SELECT T2.PKey FROM BillingDirectives T2) 
相關問題