由父母和孩子的Mysql秩序
问题描述:
我想要显示的查询按父,然后孩子排序的结果。 这里是我的代码由父母和孩子的Mysql秩序
SELECT * FROM
mst_category AS parent
LEFT JOIN mst_category AS child
ON child.category_parent = parent.category_id
GROUP BY parent.category_id
ORDER BY parent.category_group, COALESCE(parent.category_parent, parent.category_id), parent.category_parent != 0, child.category_id
查询结果:
正如你可以看到一些孩子不被父ID进行排序。我的问题是如何分类?
答
by子句简化你以你想要的排序顺序成为什么:
SELECT
parent.category_id as `parent_id`,
parent.category_group as `parent_group`,
child.category_id as `child_id`
child.category_group as `child_group`
FROM mst_category AS parent
LEFT JOIN mst_category AS child
ON child.category_parent = parent.category_id
GROUP BY parent.category_id
ORDER BY parent.category_group, child.category_group
为3个层次:
SELECT
parent.category_id as `parent_id`,
parent.category_group as `parent_group`,
child.category_id as `child_id`
child.category_group as `child_group`,
child2.category_id as `child2_id`
child2.category_group as `child2_group`
FROM mst_category AS parent
LEFT JOIN mst_category AS child
ON child.category_parent = parent.category_id
LEFT JOIN mst_category AS child2
ON child2.category_parent = child.category_id
WHERE parent.category_id = 0
GROUP BY parent.category_id, child.category_id, child2_category_id
ORDER BY parent.category_group, child.category_group, child2.category_group
+0
我发现它的方式是http://sqlfiddle.com/#!2/ed673/7/0,但它没有显示第三级菜单,只是第二级的例子。 –
+0
当然,它只显示一个孩子。要显示下一个级别,您需要添加另一个连接。 –
+0
你能举一个例子代码吗? –
多少深层次你找去?使用parent.category_parent!= 0意味着只有一个,但是从数据中可以看出有多个。通常你会为此使用递归,但在MySQL中你可能正在寻找这样的东西。 https://*.com/questions/18984074/mysql-tree-ordered-by-parent-and-child – Mic
@Mic但在我的表中,没有订单列,只有id和父母id .. –
嗯,什么是category_group?也就是说,所显示的数据分为三个层次,如果这是最低深度,那么这一点就没有意义了。从问题中不太清楚你究竟想要做什么,这就是为什么我问你需要多少关卡。 – Mic