2012-03-20 12 views
0

少なくとも1つの回覧レコードを持つすべての利用者を見つける必要があります。ここに私が現在持っているものがありますが、結果は1つだけです。私は間違って何をしていますか?テーブルjoin with()条件

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

+0

もちろん、それは別の質問ですので、別の質問をしてください。これは良い質問でもあり、良い答えがあるので、変更しないでください。 – SingleNegationElimination

3

それを追加しようとするでしょう:

についてどのように
SELECT * 
FROM patrons 
    INNER JOIN circulations on circulations.patron_id = patrons.id 
GROUP BY patrons.id 
+0

を試してみてください。他のデータベース* reaaaaaly *はこの構成が嫌いです。そのためには、グループ内の 'パトロン'のすべての列を綴るか、 'patrons.id'だけをサブクエリし、外側のクエリの' partrons'テーブルに* this *を結合する必要があります。 +1とにかく... – SingleNegationElimination

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

これはそれを行うが、*のみ* MySQLのために必要があります...

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