我有两个表tabData和tabDataDetail.
我想要在Parent-Table(tabDataDetail,FK是fiData)中只有行的父表(tabData)中的所有idData(PK):
我想要在Parent-Table(tabDataDetail,FK是fiData)中只有行的父表(tabData)中的所有idData(PK):
> fiActionCode = 11单独
要么
> fiactionCode = 11和fiActionCode = 34
任何其他组合无效.如何获得他们?
我没有成功尝试(慢,给我也只有fiActioncode 34的行):
alt text http://www.bilder-hochladen.net/files/4709-l0.jpg
谢谢你的时间.
编辑:感谢所有的答案.现在我不幸没有足够的时间来检查哪一个是最好的或者是完美的.我把第一个工作作为答案.
EDIT2:我认为标示的答案是真正最有效和最紧凑的解决方案.
EDIT3:Codesleuth的答案很有趣,因为它只返回只有一个fiActionCode = 11的行.很难看到,因为它的唯一真正的20个tabDataDetail-rows ot的41524189总行有两个.无论如何,不是100%我问过,或者我正在寻找什么.
解决方法
Select ... From tabData As T1 Where Exists ( Select 1 From tabDataDetail As TDD1 Where TDD1.fiData = T1.idData And TDD1.fiactionCode = 11 ) And Not Exists ( Select 1 From tabDataDetail As TDD1 Where TDD1.fiData = T1.idData And TDD1.fiactionCode Not In(11,34) )
为了扩展我的逻辑,第一个检查(修正)是确保存在具有fiActionCode = 11的行.第二个检查通过首先定义我们不想要的一组行来进行.我们不想要任何东西,而不是fiActionCode = 11或34.因为这是我们不想要的一组项,我们搜索该集合中不存在的任何东西.