0

我有两张桌子 - 'LeftTable' 和 'RightTable'。这些数据如下所示:

左表

T1 | C45  
T1 | C46  
T1 | C47  

右表

T9 | C45  
T9 | C47  
T10| C45  
T10| C46  
T10| C47  
T10| C52  

我正在尝试编写一个 SQL 查询,告诉我右表中的哪些“T”条目包含其中的所有“C”条目,就像在 LeftTable 中一样

LeftTable 只有一种“T”条目。所以,因为 LeftTable 有 C45、C46、C47 - 我想要 RightTable 中的“T”值,它们对应的“C”为 C45 C46 C47。

因此,在这种情况下,它应该返回 T10(它包含所有三个)。但是,它不应该返回 T9(因为它只有两个来自 LeftTable 的常见“C”值)

4

2 回答 2

0

这个问题比我最初想象的更有趣。:-)

假设 RightTable (rt) 上有一个组合的唯一键,这将起作用:

select rt.id , count(*) right_count 
from rt join lt on rt.val=lt.val 
group by rt.id
having count(*) = (select count(distinct val) from lt)

和:

rt = RightTable
lt = LeftTable
id = T-field
val = C-field

我希望这有帮助。拉尔夫

于 2013-07-11T23:59:13.780 回答
0

需要这样的东西:

从 RT 中选择 T 值

什么时候

(SELECT C-VALUEs FROM LT EXIST IN (SELECT C-VALUEs FROM RT for each t-value)

于 2013-07-15T13:29:33.380 回答