使用MySQL
,我可以执行以下操作:
SELECT c.id_category, c.id_category_type, c.label, c.id_parent
FROM category c
WHERE c.id_category_type < 3
ORDER BY c.id_category_type;
结果是:
id_category |id_category_type |label |id_parent |
------------|-----------------|----------------------|----------|
1 |1 |Demande d'information |-1 |
2 |1 |Réclamation |-1 |
18 |1 |TEST |-1 |
3 |2 |Autre |1 |
4 |2 |Mairie |1 |
5 |2 |Stationnement |1 |
6 |2 |Autre |2 |
7 |2 |Familles |2 |
19 |2 |TESTDOMAINE |18 |
但我只想要concat
行id_category
id_parent
实施例
Autre-Demande d'information
Mairie-Demande d'information
Stationnement-Demande d'information
Autre-Réclamation
Familles-Réclamation
TESTDOMAINE-TEST
我在MySQL Doc上找了一个函数,它看起来不像CONCAT
或CONCAT_WS
函数接受结果集,所以这里的任何人都知道如何做到这一点吗?
答案 0 :(得分:2)
测试一下:
SELECT category.id_category, category.id_category_type,
CONCAT(category.label, '-', parents.label), category.id_parent FROM category INNER JOIN
(SELECT id_category AS id, label FROM category WHERE id_parent = -1) AS parents
ON parents.id = category.id_parent WHERE category.id_category_type < 3
ORDER BY category.id_category_type;
您的数据混合了“父行”和“子行”:当寄存器的id_parent = -1时,我认为是父行,而当id_parent&lt;&gt; -1是子行。
您正在请求结果列加入“childs rows”和“parents rows”中的“label”列,然后它的necesary构建一个“父表”,这是通过以下方式实现的:
(SELECT id_category AS id, label FROM category WHERE id_parent = -1) AS parent
然后您可以像使用任何其他表一样使用“父”表并构建您的连接查询