表结构如下:
id name parentid
1001 仓库一 0
1002 仓库二 0
1003 柜台一 1001
1004 柜台二 1002
1005 第三排 1003
输入 id=1005 我想要的查询结果:
仓库一#柜台一 #第三排
使用sql语句应该怎么写
[b]问题补充:[/b]
不能限定几层,比如说:sun201200204的答案他就是限定为三层了,改问题的层数是不知道的
求教一个SQL语句
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
7条回答 默认 最新
- xieye114 2009-02-16 22:07关注
这是个常见问题啊,
一般来说不能用一条sql解决,改表后可用一条sql解决
解决办法视情况而定,假如你知道最多父节点只有4、5级,也就是级别不多的情况下,那么用程序语言如PHP,java递归(这种情况还要细分,如果表记录不多的话,可以一次读入整张表,否则多次读,读一次查一次)
假如级别很多,比如有十多级,则你应该给表加冗余字段来解决,可以做到用一条sql来解决,缺点是删除记录时要小心,增加记录也要小心。
加冗余字段又有几种方法,有一种是加左右节点的,请查看数据结构的资料,
还有一种容易理解,加2个字段,分别是级别和位置字段。表结构如下:
id name parentid level location(字符串类型)
1001 仓库一 0 1 1001
1002 仓库二 0 1 1002
1003 柜台一 1001 2 10011003
1004 柜台二 1002 2 10021004
1005 第三排 1003 3 100110031005
是不是很简单,实际上parentid就是多余字段了,可以不要了。
当然查名字还要查一下,总之不递归了。查两次。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
- ¥88 找成都本地经验丰富懂小程序开发的技术大咖
- ¥15 如何处理复杂数据表格的除法运算
- ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
- ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
- ¥200 uniapp长期运行卡死问题解决
- ¥15 latex怎么处理论文引理引用参考文献
- ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
- ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
- ¥15 乘性高斯噪声在深度学习网络中的应用