我有一个名为forms
的表和一个名为categories
的表。它们通过category_form
作为pivot具有多对多的关系。透视表具有form_id
和category_id
所以每个表单可以有很多类别,每个类别可以附加到很多表单上。
我需要以某种方式汇总这些数据。我需要的是一个逗号分隔的类别ID的列表在一列中为每个表单。
像这样:
FORMS
id | name | categories
1 | f1 | 1,4,7
2 | f2 | 1
3 | f3 | 1,6,8,9
做这件事的有效方法是什么?
试试看:
SELECT f.id, f.name, GROUP_CONCAT(cf.category_id) AS categories
FROM forms f
INNER JOIN category_form cf ON f.id = cf.form_id
GROUP BY f.id, f.name
ORDER BY f.id;