这可能很简单,但我无法弄清楚这一点。以下是我正在使用的表格。
表-A
id other_data
-------------
1 blah
2 foo
3 bar
表-B
ref_a ref_c
-------------
1 1
1 2
2 3
3 3
table_c
id name
----------
1 TestA
2 TestB
3 TestC
我想要的是这样的,我在计算具有相同子集(table_b)的行数(table_a)。我还希望能够从另一个表中获取相关数据(table_c中的名称)。
TestA,TestB 1
TestC 2
我知道它可能使用Group By和GROUP_CONCAT但我无法使用它。
我尝试了这个,但它不起作用。
SELECT GROUP_CONCAT(DISTINCT table_c
。name
separator',')as'combo_text',COUNT(DISTINCT table_a
。id
)
来自table_a
INNER JOIN table_b
在table_a
。id
= table_b
。ref_a
INNER JOIN table_c
在table_c
。id
= table_b
。ref_c
GROUP BY table_b
。ref_a
答案 0 :(得分:2)
SELECT a.id, count(a.id) as count, GROUP_CONCAT(name) as names
FROM table_a a
JOIN table_b b ON (a.id = b.ref_a)
JOIN table_c c ON (b.ref_c = c.id)
GROUP BY a.id
根据你的结果你想要这样的东西
SELECT names, count(count) as count FROM
(SELECT a.id, count(a.id) as count, GROUP_CONCAT(name) as names
FROM table_a a
JOIN table_b b ON (a.id = b.ref_a)
JOIN table_c c ON (b.ref_c = c.id)
GROUP BY a.id
)T1
GROUP BY names