2014-02-06 55 views
0

希望您能帮我找出一个好的解决方案。 我必须建立文件夹树,首先从MYSQL表中检索数据。我的表的简化结构,称为categories是:将列与其他列中的多个值进行比较

id parent_id name 
1 0   jackets 
2 0   sweaters 
3 1   men 
4 1   woomen 
5 0   trousers 
6 5   children 

要正确地构建它(JavaScript的,样式)我已经确定,当前类别是否已经或没有子女,通过与价值观比较列“身份证”的价值来自列'parent_id'的所有行,所以应该有动态列has_children。

输出必须是这样的:

id parent_id name  has_children 
1 0   jackets true 
2 0   sweaters false 
3 1   men  false 
4 1   woomen false 
5 0   trousers true 
6 5   children false 
+0

请注意,按照惯例,我们使用NULL而不是0来表示孤儿。 – Strawberry

+0

如果是这样,我必须将列的类型从int()更改为字符串。考虑到它包含的ID是数字,它是正确的吗?尽管如此,这不是什么大不了的事,尤其是与我的主要问题相比,价值) – Erik

+0

呃,不,你不! – Strawberry

回答

0

您可以添加一个选择,这样你可以有一个T/F标志。

SELECT 
    p.id, p.nParentID,p.sTitle, 
    (SELECT COUNT(*) FROM pub.category c WHERE c.nParentId = p.id) AS nChildrenCount, 
    IF (SELECT COUNT(*) FROM pub.category c WHERE c.nParentId = p.id) , true, false) AS bHasChildren 
FROM pub.category p 

我已经包括一个计数以及清晰度。但是,如果您尝试制作级联菜单,则会发现此标志可能非常方便,但您确实需要使用ui侧/中间件方递归函数将菜单构建为您的漂亮关系对象。该标志可以被递归菜单构建器使用。

+0

叶,非常感谢!这完全是我想要的。 – Erik

+0

我在每个类别中肯定不会超过1个孩子级别,所以我不想在没有真正需要的情况下过度复杂化。 – Erik

相关问题