タイトルがややこしいので、ここまで。
私はテーブルを持っています:tag_tasks
tag_id
これは、重要な 2 つの列を持つ結合テーブルです。task_id
両方のタグを持つタスクの数を取得したいと思います。
例: 私は atask(id = 12)
と atag(id = 24
と別のものを持っていますtag(id = 30)
tag_tasks には、次のレコードがあります。
tag_id task_id
24 12
30 12
それを現実的にするためにそこにいくつかの記録もあるとしましょう:
tag_id task_id
24 12
30 12
36 43
24 45
56 98
24 115
30 115
task_id に両方のターゲット タグが関連付けられている場合にのみ、レコードを返したいと思います。この場合、最初の 2 行 (task_id = 12) と最後の 2 行 (task_id = 115) だけで、合計カウントを取得します (この場合、私の最終目標は数字の 4 を返すことです)。
編集 - 結果セット
tag_id task_id
24 12
30 12
24 115
30 115
しかし、最終的には次のような結果になりたいと思います(上記の結果の合計):
task_count_for_both_tags_combined
4
これについて考えるのは少し混乱するので、質問を明確にすることができるかどうか教えてください。
ありがとうございました。
編集 -これまでの私の結果 このコードは私を近づけますが、結果の数値を追加する必要があります-*これは現在のデータセットを突き出していることに注意してください。
SELECT COUNT( task_id ) AS task_count, tag_id
FROM `tag_tasks`
WHERE tag_id
IN ( 15, 11 )
GROUP BY task_id
HAVING task_count >1
これにより、次の結果が得られます。これには、次の合計が必要です。
task_count task_id
2 34
2 45
編集 - SQLFIDDLE の例 これが存在することを知ったばかりなので、わずかに大きなデータ セットを持つポスターの 1 つからの誤ったフィドルの回答を次に示します。このSQLは、私が望むものとは異なるタグを持つレコードを選択することになります(24と30だけではなく、31と32)。