SQL查询语句

mytest114 2010-07-08 08:05:22
各位大哥,小弟刚开始学习数据库,最近在学习的时候遇到个数据库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数据库.
...全文
130 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
mytest114 2010-07-11
  • 打赏
  • 举报
回复
啊,还是没那位大哥能回复一下啊
mytest114 2010-07-10
  • 打赏
  • 举报
回复
各位大哥谢谢你们,可能是我吧问题没说清楚,我看好多热心的大哥的SQl语句中直接把"一级","二级"都做了条件,这样写好像不满足我现在的要求.我再把数据给大家说一下,呵呵,还是希望能得到各位热心帮助:

呵呵,就像楼上一位大哥说的那样,我做测试的东西就是一个树形结构,在这个树形结构中最多有三级节点,
第一级节点没有父节点,那么他的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
shixixi1987 2010-07-09
  • 打赏
  • 举报
回复
if exists(select * from sysobjects where [name]='table1')
drop table table1
go
create table table1
(
[name] varchar(10),
title varchar(10),
parent varchar(10)
)
go
insert into table1([name],title,parent)
values('A','一级','--')
insert into table1([name],title,parent)
values('B','二级','A')
insert into table1([name],title,parent)
values('C','二级','A')
insert into table1([name],title,parent)
values('D','一级','--')
insert into table1([name],title,parent)
values('E','三级','B')
insert into table1([name],title,parent)
values('F','三级','C')
insert into table1([name],title,parent)
values('G','二级','D')
insert into table1([name],title,parent)
values('H','三级','B')
go
select a.name '一级',b.name '二级',isnull(c.name,'--') '三级' from table1 a inner join
table1 b on a.name=b.parent and a.title='一级'
left join table1 c on b.name=c.parent and b.title='二级'
go
xxccy 2010-07-09
  • 打赏
  • 举报
回复
你的数据库我不会,mssql可以这样:

--> 测试数据: ##t1
if object_id('tempdb.dbo.##t1') is not null drop table ##t1
create table ##t1 (name varchar(1),title varchar(4),parent varchar(1))
insert into ##t1
select 'A','一级',null union all
select 'B','二级','A' union all
select 'C','二级','A' union all
select 'D','一级',null union all
select 'E','三级','B' union all
select 'F','三级','C' union all
select 'G','二级','D' union all
select 'H','三级','B'
select * from ##t1

--查询
select a.name ,b.name,c.name
from ##t1 a
inner join ##t1 b on a.name=b.parent and a.title='一级'
left join ##t1 c on b.name=c.parent and b.title='二级'
/*
结果
name name name
---- ---- ----
A B E
A B H
A C F
D G NULL

(4 行受影响)
*/
chenbest11 2010-07-09
  • 打赏
  • 举报
回复
用关系数据库分层?小的程序用XML吧
mytest114 2010-07-09
  • 打赏
  • 举报
回复
没人啊
mytest114 2010-07-08
  • 打赏
  • 举报
回复
呵呵,不好意思,可能我没表达清楚题目意思
就是查询出:

一级标题对应的所有子标题并依次列出来
比如一级标题A 他对应有二级标题B和C, 然后B对应有三级标题E,C对应有三级标题F
一级标题D对应有二级标题G,并且G没有三级标题了
那么查询数据中就是
A B E
A C F
D G -
mytest114 2010-07-08
  • 打赏
  • 举报
回复
真没有人会么,不会这么叫人失望吧
tengluoer 2010-07-08
  • 打赏
  • 举报
回复
数据库啊 我们刚学……
mytest114 2010-07-08
  • 打赏
  • 举报
回复
各位大侠,虽然我不大懂,但是好像普通的SQL语句数据库基本上是差不多的吧,这和具体的数据库关系好象不是很大吧,呵呵...
claro 2010-07-08
  • 打赏
  • 举报
回复
总是看到最后才发现原来不懂这个DB。

帮顶
thinclient 2010-07-08
  • 打赏
  • 举报
回复
你进错地方了兄弟
thinclient 2010-07-08
  • 打赏
  • 举报
回复
晕的很
SQL77 2010-07-08
  • 打赏
  • 举报
回复
SYBASE帮顶

34,873

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧