2012-03-20 86 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