2012-03-24 3 views
0

次のクエリを使用して、オブジェクトのすべてのタグを検索し、各タグのカウントを取得することに問題はありません。mysql - タグのカウントを取得し、現在のユーザがそのカウントに貢献した場合

これは機能しますが、user_id列はGROUP BYによってマッシュされます。私はまだこの本の各タグのタグ合計を求めていますが、現在のユーザ(user_id = 1)が各タグのカウントに貢献しているかどうかを示すエイリアスを作成したいと考えています。

私は本の持つすべてのタグを表示しますが、このユーザーが追加したタグのスタイルを変更します。私はこのループと複数のクエリを行うことができます、それはちょうど1つで実行可能であるように思えます。

答えて

1
SELECT *, COUNT(*), SUM(user_id = 1) AS contributed 
etc... 

MySQLが加算されます整数1または0user_id = 1比較の真/偽のブール値に変換します。クエリの結果を取得するときに、ゼロ以外の値であれば、その特定のユーザーが寄与しており、値は寄与の合計数です。あなたがこれを行うことができます

+0

完璧に働いた、ありがとうございました! –

0

一つの方法:

SELECT *, COUNT(*) as count, 
    sum(if(user_id = 1, 1, 0)) as user_contributions 
    FROM book_tags 
    JOIN tags ON book_tags.tag_id = tags.id 
    WHERE book_id = 66 GROUP BY tag_id 
関連する問題