各位大哥,小弟刚开始学习数据库,最近在学习的时候遇到个数据库SQL的问题,不知道该怎么写这句SQL,想上来向各位请教一下,先说一下问题:
有一张表 假设表名叫(table1),其中列和数据如下:name | title | parent|
-----------------------
A 一级 --
B 二级 A
C 二级 A
D 一级 --
E 三级 B
F 三级 C
G 二级 D
H 三级 B
现在要查询出如下样式的结果,不知道该怎么写SQL
-------------------------------------------
A B E
A B H
A C F
D G ---------------------------------------------
不知道各位能看明白我的意思么,昨天问了一下人,他们说要用到什么递归,
我还是不大明白,希望各位能够帮忙看一下,顺便给点意见,谢谢.
还有我是用的sybase数据库.
有一张表 假设表名叫(table1),其中列和数据如下:name | title | parent|
-----------------------
A 一级 --
B 二级 A
C 二级 A
D 一级 --
E 三级 B
F 三级 C
G 二级 D
H 三级 B
现在要查询出如下样式的结果,不知道该怎么写SQL
-------------------------------------------
A B E
A B H
A C F
D G ---------------------------------------------
不知道各位能看明白我的意思么,昨天问了一下人,他们说要用到什么递归,
我还是不大明白,希望各位能够帮忙看一下,顺便给点意见,谢谢.
还有我是用的sybase数据库.
解决方案 »
- 求助 xstream 读取xml 转换成java 对象
- 服务起来,如何执行一个webservice
- Lucene 高亮 错误
- java.io.IOException: Error: Attempt to clear a buffer that's already been flushed这是什么错误啊
- 求助:jsp+jdbc无法插入mysql
- logback如何配置当启动tomcat服务或者当根据log文件大小来进行滚动
- 来试试新的免费Struts 开发插件
- 学习模式设计或struts之前需要什么样的知识和功底!
- 连接ORACLE 时、出现的异常?
- 求用java编的ftp客户端源代码
- 睡不着,考虑一个问题
- js怎么实现脚本版的试衣间啊?请教各位大虾!
就是查询出:一级标题对应的所有子标题并依次列出来
比如一级标题A 他对应有二级标题B和C, 然后B对应有三级标题E,C对应有三级标题F
一级标题D对应有二级标题G,并且G没有三级标题了
那么查询数据中就是
A B E
A C F
D G -
select t3.name1,t3,name2,t4,name as name3
( select t1.name as name1 , t1.title as title1, t1.parent as parent1,t2.name as name2,t2.title as title2
from (select name title parent from table1
where parent ='--' ) as t1 left join table1 as t2
on (t1.name=t2.parent and t2.parent<>'--') ) as t3 left join table as t4
on (t3.name2 = t4.name and t4.parent<>'--' and t3.name1<>t4.name)
LZ是嵌套写的sql么?你查出的结果什么地方不对?
把你的sql贴出来看看
你百度下 SQL递归查询 就可以找到答案
parent = --为条件
然后
left outer join table as level2
...
left outer join table as level3
...
大体应该是这样:
select ..
from table as level1
left join table as level2
on level1.name = level2.parent
left join table as level3
on level2.name = level3.parent
where level1.parent = --
如果不只三层的话,那就看你的数据库是否支持递归的join了。
如果不支持递归查询,你可以试试hibernate,做一个递归的对应关系,然后就好办了。
第一级节点没有父节点,那么他的parent的值就是null,其他的二三级节点就一次类推;(其中有些节点只有二层,就是说没有三级节点)其实表中用到的字段就2个,一个是name ,一个是parent,且name和parent中数据是有关联关系的,name | parent
-------------------------
parm null --->这个是个一级节点
commonParm parm --->这个是个二级节点
coinParm commonParm --->这个是个三级节点
rateParm commonParm
bankParm commonParm
report null
singleFundReport report
manyFundReport report
thing singleFundRepor
attemper singleFundRepor
balanceTab manyFundReport
balanceChange manyFundReport
trade null
businessbalance trade
workDateparm trade
--------------------------------
那个根据上面的数据查询出来的结果就是
列一 | 列二 | 列三
---------------------------------
para commonParm coinParm
para commonParm rateParm
para commonParm bankParm
report singleFundReport thing
report singleFundReport attemper
report manyFundReport balanceTab
report manyFundReport balanceChange
trade businessbalance
trade workDateparm