2010-12-27 4 views
0

私はmember_informationとその参照エージェントを持つテーブルを持っています。エージェントが3回以上出現するテーブルのすべての情報(select *)を返すクエリを実行したい。SQLクエリは、句を持つことによってグループ内で目的の結果を返しません。

私の最初のクエリは次のとおりです。

SELECT agent FROM activity GROUP BY agent ASC HAVING COUNT(agent) > 3; 

、これは必要なエージェントIDのではなく、「活動」内の残りのデータを返します。

私がするように修正:

SELECT * FROM activity GROUP BY agent ASC HAVING COUNT(agent) > 3 

これだけ戻る代わりに一致するエージェント番号を持つ全ての行の必要な各エージェント数の結果の一つ。

私には何が欠けていますか?

編集

は、次のようにテーブル構造があると仮定します。

id  |  agent  |  name  |  address 
-------------------------------------------------------- 
1  |  1  |  (name) |  (an address) 
2  |  1  |  (name) |  (an address) 
3  |  2  |  (name) |  (an address) 
4  |  3  |  (name) |  (an address) 
5  |  3  |  (name) |  (an address) 
6  |  3  |  (name) |  (an address) 
7  |  1  |  (name) |  (an address) 
8  |  2  |  (name) |  (an address) 
9  |  4  |  (name) |  (an address) 

クエリの結果を返す必要があります:

id  |  agent  |  name  |  address 
-------------------------------------------------------- 
1  |  1  |  (name) |  (an address) 
2  |  1  |  (name) |  (an address) 
4  |  3  |  (name) |  (an address) 
5  |  3  |  (name) |  (an address) 
6  |  3  |  (name) |  (an address) 
7  |  1  |  (name) |  (an address) 
+1

テーブルの構造は何ですか? – BoltClock

+0

@BoltClock - – JM4

+0

の編集を参照してください。同じことを適用できます。http://stackoverflow.com/questions/4537255/how-to-select-the-minvalue-using-having-key-word/4537276 #4537276 –

答えて

4

使用:

SELECT x.* 
    FROM ACTIVITY x 
    JOIN (SELECT t.agent 
      FROM ACTIVITY t 
     GROUP BY t.agent 
     HAVING COUNT(t.agent) > 3) y ON y.agent = x.agent 
1

あなたのグループ、グループ内のすべての行を取得するには、によって1つに凝縮される。あなたが何をしようとしてに応じて、適切なグループ関数(SUM、GROUP_CONCATなど)を使用する必要がある、またはあなたが私はあなたがサブクエリでやろうとしていると思うものを行うことができます。

SELECT * FROM activity WHERE agent IN (select agent from activity group by agent asc having count(agent) > 3); 
関連する問題