将列的值与其他列中的多个值进行比较

时间:2014-02-06 17:33:32

标签: mysql database database-design

希望,你能帮助我找到一个好的解决方案。 我必须先构建文件夹树,从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,样式)我必须通过将列'id'的值与'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

1 个答案:

答案 0 :(得分: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端/中间件端递归函数来将你的菜单构建成一个很好的关系对象。该标志可以由递归菜单构建器使用。