2015-11-19 34 views
0

我是这个论坛的新手,也是SQL,需要在工作中快速查看。我搜索了这样一个话题,但没有找到确切的同样的问题...选择与其他表格匹配的计数值使用SQL的值

我有2个表:表A表B和

表A

Name NumberOfScreens 
----------------------- 
ABC1   5 
ABC2   4 
ABC3   7 

表B

Name Date Duration 
------------------------ 
ABC1 x  xxx 
ABC1 x  xxx 
ABC1 x  xxx 
ABC3 x  xxx 
ABC3 x  xxx 

我现在的问题是要计算TableB中的同名名称数(这就是我的想法)

Select(*) from TableB where Count(Name) <> TableA.NumberOfScreens 

因此,如果ABC1在TableB中出现5次并且ABC1 = 5的TableA.NumberOfScreens,我不希望它出现在我的SELECT中。 如果ABC3在TableB中出现3次并且ABC3 = 5的TableA.NumberOfScreens出现,我需要它出现在我的SELECT中。

谁能帮助我?

谢谢:)

+1

你可以对预期的结果更精确? –

+0

我需要从TableB中的列中获取所有名称,其中TableB中的Number发生的次数低于TableA中的Number。一个小例子: ABC1在TableB中出现3次,但ABC1 = 5的TableA.NumberOfScreens,所以我需要它被选中。 ABC3在TableB中出现4次,而ABC3 = 4的TableA.NumberOfScreens,所以不需要选择 –

回答

1
select A.Name, A.NumberOfScreens 
from TableA A join TableB B 
on A.Name = B.Name 
group by A.Name,A.NumberOfScreens 
having count(*) = A.NumberOfScreens 

编辑:

select tb.Name, tb.Date, tb.Duration 
from TableB tb join 
(
select A.Name tmpName, A.NumberOfScreens tmpNumberOfScreen 
from TableA A join TableB B 
on A.Name = B.Name 
group by A.Name,A.NumberOfScreens 
having count(*) <> A.NumberOfScreens 
) tmp 
on tb.name = tmp.tmpName 
+0

,它给了我TableA的值,但我需要TableB的列:) –

+0

您可以加入此结果与表B –

+0

你能给我一点帮助吗?正如我所说,我是新来的SQL和我只是无法得到我想要的结果:( –

相关问题