我在项目的聚合函数中使用Group concat来显示类别的子类别。
这是MYSQL查询。
$sql_query = "SELECT TC.category_name, GROUP_CONCAT(TS.sub_category_name ORDER BY TS.sub_category_name) from table_categories as TC
INNER JOIN
table_subcategory_categories as TSC
ON
TSC.category_id = TC.category_id
INNER JOIN
table_subcategories as TS
ON
TS.sub_categories_id = TSC.subcategory_id
GROUP BY TC.category_id
order by TC.category_name";
问题是我需要将这些子类别作为单独的实体进行处理。但由于Group concat,他们成为一个单一的实体。
这是什么解决方案?
是否有任何替代的Group concat可以实现相同的目标。
电流:
Body Wash <a>Bathing Soap|Shower Gel</a> delete
这种删除在这里毫无意义。
期待:
Body Wash <a>Bathing Soap</a> delete
<a>Shower Gel</a> delete
答案 0 :(得分:0)
那么为什么不删除GROUP_CONCAT
...?
$sql_query = "SELECT TC.category_name, TS.sub_category_name
from table_categories as TC
INNER JOIN
table_subcategory_categories as TSC
ON
TSC.category_id = TC.category_id
INNER JOIN
table_subcategories as TS
ON
TS.sub_categories_id = TSC.subcategory_id
order by TC.category_name, TS.sub_category_name";
答案 1 :(得分:0)
尝试删除group by
:
select TC.category_name, TS.sub_category_name
from table_categories TC INNER JOIN
table_subcategory_categories TSC
ON TSC.category_id = TC.category_id INNER JOIN
table_subcategories TS
ON TS.sub_categories_id = TSC.subcategory_id
order by TC.category_name, TS.sub_category_name;
您将获得多行的值。您还将在每行中重复category_name
次。这就是SQL结果集的工作方式。如果您不想重复该类别,请在应用程序端执行某些操作以获得所需的结果。