2014-06-11 43 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) 
相关问题