2011-12-25 10 views
0

こんにちは:私は、制限を使用するかのように、SUMまたはCOUNTでクエリの結果を制限する方法が必要です。これは可能ですか?私は質疑応答のテーブルを持っています。各エントリは、質問の場合は「0」、応答の場合は「1」で識別されます。各回答にはquestionIDがあるので、このフィールドで注文することができます。 LIMIT 0,20を使用すると、質問や回答に関係なく最初の20件のエントリが表示されるため、制限を使用せずに最初の20個の質問をすべての回答とともに表示したい。MySQL:Countを使用して結果を制限する?

私はこのようないくつかのロジックを見たい

SELECT *, SUM(IF(level = '0', 1,0)) AS MyCount FROM table 
WHERE MyCount<20 ORDER BY questionID,timestamp 

どのように私はこれを達成するだろうか?どんな提案も感謝しています。

+0

スキーマを投稿できますか? –

答えて

2

あなたはGROUP機能(合計値)をやっているので、WHEREの代わりにHAVING使用してみてください:

SELECT *, SUM(IF(level = '0 ', 1,0)) AS MyCount 
FROM table 
HAVING MyCount < 20 
ORDER BY 
     questionID,timestamp 

- 編集 -

あなたは2つの異なるデータの種類を格納しているので(応答同じテーブルに質問)、あなたは自己)(未テストに参加してみてください:

SELECT 
    question.id AS question_id, 
    question.name AS question_name, 
    response.id AS response_id, 
    response.name AS response_name   
FROM 
    table AS question 
JOIN 
    table as response 
ON 
    question.id AND response.level = 1 
WHERE 
    question.level = 0; 
+0

私はこの提案を試みたが結果は得られなかった:( – BitGenix

+0

このサンプルをありがとうが、これは私にとってはうまくいかない。 – BitGenix

1

これはひどい設計されたスキーマのように聞こえます。 1つのテーブルにあなたの質問を、別のテーブルにあなたの答えを持っているなら、質問IDを回答テーブルの外部キーにしてください。同じテーブルにそれらを一緒にチャッキングする理由は、今あなたがこの問題を抱えている理由です!

+0

あなたは正しいが、私がこのようにした理由は、一回のパス。 – BitGenix

関連する問題