求一条自连接的查询SQL

hoodlake 发布于 2013/05/21 09:13
阅读 231
收藏 2
有一张 账户表是个自连接的表,有bank_acc(账号),parent_acc(父账号),parent_sign(1,父账号;0,没有子账号),顶级父帐号的parent_acc 为 null

现在给出一个父账号,要求查询出该账号的所有的子账号(包括直接子账号,二级,三级。。。N级子账号)

bank_acc    parent_acc    parent_sign
   1               null                1
   2               null                1
   11              1                   1
   12              1                   0
   111            11                 0

比如给出父账号 1; 11,12,111这三个账户都得查出来

加载中
0
慕北游
慕北游
可以搜一下oracle 的 start with... connect by... 的用法
hoodlake
hoodlake
正在看这种结构
0
Tuesday
Tuesday
相信这表不会超过1000条数据吧. 全部查出来, 用php处理.
hoodlake
hoodlake
我还是倾向于用SQL解决,虽然我没写过。但是我觉得这个应该是个很大众化的问题,毕竟表结构在那里,用SQL解决,个人觉得正规点
hoodlake
hoodlake
不会的,根据父账号查询,不会超过100条数据 能给个SQL语句不
0
魔力猫
魔力猫
你用的什么数据库?只要数据库支持递归就很容易。
hoodlake
hoodlake
ORACLE
0
优雅先生
优雅先生
貌似要用到递归了
0
晴风晓月
晴风晓月

可以考虑从账号的结构入手,比如说前两位代表上一代码,后边再加两位代码本级代码,这样就会形成父结点代码是子结点代码的前缀,根据父结点的代码就比较容易查找到子结点了

晴风晓月
晴风晓月
回复 @hoodlake : 我知道你的真实情况可能不是这样,我想法就是你将账号代码进行结构化设计,将它设计成这样,以方便编程处理。
hoodlake
hoodlake
真实情况,账号之间,在结构上没有多大的关系,我写11,111只是为了方便而已
0
魔力猫
魔力猫
自己看Oracle 递归,非常容易。
返回顶部
顶部