2012-03-20 90 views
0

我需要找到所有有至少1个流通记录的顾客。这是我目前拥有的,但它只能找到一个结果。我究竟做错了什么?表加入count()条件

SELECT * 
FROM patrons 
    INNER JOIN circulations on circulations.patron_id = patrons.id 
HAVING COUNT(circulations.id) > 0 

我没有给表的结构,因为我想这是没有必要的解决方案。如果需要的话,让我知道,我会尽力将它添加到的问题

回答

4

如何:

SELECT * FROM patrons 
WHERE EXISTS (SELECT 1 FROM circulations 
       WHERE circulations.patron_id = patrons.id) 
+0

我喜欢这个,因为它不会分组顾客。有没有办法找到同一查询中每个赞助人有多少流通记录? – LordZardeck 2012-03-21 00:10:33

+0

当然,但这是一个不同的问题,所以问另一个问题;这也是一个很好的问题,并且有一些很好的答案,所以不要去改变它。 – SingleNegationElimination 2012-03-21 00:11:54

3

下面应该工作:

SELECT * 
FROM patrons 
    INNER JOIN circulations on circulations.patron_id = patrons.id 
GROUP BY patrons.id 
+0

这应该这样做,但只有* *为MySQL。其他数据库* reaaaaaly *讨厌这种构造。对于这些,你必须拼出组中的每个“patrons”列,或者在'patrons.id'上做一个子查询,然后将*这个*连接到外部查询中的'partrons'表。 +1无论如何... – SingleNegationElimination 2012-03-21 00:07:25

0

看看我的示例:

设想的赞助人名称是您的赞助人桌上的专栏。

SELECT PatronName,COUNT(circulations.id) as CountCirculation 
FROM patrons 
    INNER JOIN circulations on circulations.patron_id = patrons.id 
group by PatronName 
HAVING COUNT(circulations.id) > 0 

问候

0

的Try ...

select * 
from patrons p 
left join circulation c on c.patron_id = p.id 
where not c.patron_id is null