私は2つのテーブルとユーザーを持っています。次の表にはstatusという名前の列があります。私は各ユーザーがステータスによってグループ化しているかを数えたいと思います。mysqlのgroup_concatの内部にカウントがありますか?
以下のクエリは、各ユーザーの各ステータスタイプのレコードを返します。
SELECT users.name as user_name, f.status, count(f.id)
FROM users
JOIN application_follows f ON f.user_id = users.id
GROUP BY users.id, f.status
ORDER BY users.id
リターンのようなもの:
user_name status count
mike new 10
mike old 5
tom new 8
tom old 9
をしかし、私はのような、より友好的な何かをしたいと思います:
user_name status_count
mike new,10|old,5
tom new,8|old,9
はGROUP_CONCATを使用してみましたし、カウントが、didntの仕事。すべての手がかりは?私は完全なテーブル定義をそれほど知らない
SELECT users.name, GROUP_CONCAT(CONCAT(f.status, ',', f.cnt) SEPARATOR '|')
FROM users
JOIN
(SELECT user_id, status, count(id) AS cnt
FROM application_follows
GROUP BY user_id, status) f
ON f.user_id = users.id
GROUP BY users.id
こんにちは、ありがとう、それはトリックを行った... –