首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

『』【求高手给帮看一下这个存储过程的写法】解决思路

2012-01-22 
『』【求高手给帮看一下这个存储过程的写法】谢谢进来观看此帖,详细说明如下有如下二张表:A表如下:目录编号目

『』【求高手给帮看一下这个存储过程的写法】
谢谢进来观看此帖,详细说明如下

有如下二张表:
A表如下:
目录编号   目录名称     目录类型
01               一号               文本文件
02               二号               文本文件
03               三号               数据文件

B表如下:
文件编号             文件名称       所属目录   父级目录   文件类型
File001                 问题一           01                   0               文本文件
File002                 问题二           01                   0               文本文件
File003                 问题三           02                   0               文本文件
File004                 问题四           01               File001       文本文件
File005                 问题五           01               File002       文本文件
File006                 问题六           02               File003       文本文件

现有将以上的二个表归纳成如下表,请用存储过程来实现,谢谢各位:
C表:
目录编号       目录名称       文件编号       文件名称       子文件编号   子文件名称
01                       一号             File001         问题一             File004       问题四
01                       一号             File002         问题二             File005       问题五
02                       二号             File003         问题三             File006       问题六

就是以上的要求了,谢谢大家!

补充一下,上面的C表结果是都是文本文件的,如果没有这个类型设置的话,那C表还会有一行的
目录编号       目录名称       文件编号       文件名称       子文件编号   子文件名称
01                       一号             File001         问题一             File004       问题四
01                       一号             File002         问题二             File005       问题五
02                       二号             File003         问题三             File006       问题六


03                       三号             null               null                 null             null



[解决办法]
create database Test
go
use Test
go
create table A
(
目录编号 varchar(2) primary key,
目录名称 varchar(10),
目录类型 varchar(10)
)
insert into A values ( '01 ', '一号 ', '文本文件 ')
insert into A values ( '02 ', '二号 ', '文本文件 ')
insert into A values ( '03 ', '三号 ', '数据文件 ')

select * from A

create table B
(
文件编号 varchar(10) primary key,
文件名称 varchar(10),
所属目录 varchar(2) references A(目录编号),
父级目录 varchar(10),
文件类型 varchar(10)
)

insert into B values( 'File001 ', '问题一 ', '01 ', '0 ', '文本文件 ')
insert into B values( 'File002 ', '问题二 ', '01 ', '0 ', '文本文件 ')
insert into B values( 'File003 ', '问题三 ', '02 ', '0 ', '文本文件 ')
insert into B values( 'File004 ', '问题四 ', '01 ', 'File001 ', '文本文件 ')
insert into B values( 'File005 ', '问题五 ', '01 ', 'File002 ', '文本文件 ')
insert into B values( 'File006 ', '问题六 ', '02 ', 'File003 ', '文本文件 ')

//下面这个查询就可以了
select b.所属目录 as '目录编号 ', a.目录名称, b.文件编号, b.文件名称, bb.文件编号 as '子文件编号 ', bb.文件名称 as '子文件名称 '
from b inner join a
on b.所属目录 = a.目录编号
inner join b as bb
on b.文件编号 = bb.父级目录
where b.父级目录 = '0 '
[解决办法]
楼上都答完了,只有接分了
[解决办法]
又晚了一步
[解决办法]
DAY DAY UP
[解决办法]
学习
[解决办法]
好象一个SQL就可以搞定哦~~
高歌的我没看完
但是好象得用LEFT OUTER JOIN 吧
[解决办法]
接分
[解决办法]
看到这东西就头大.
[解决办法]
用 amandag(高歌) 方式简单些.
[解决办法]
学习
[解决办法]
接分

[解决办法]
JF!
[解决办法]
mark

[解决办法]
create table D
(
序号 int identity primary key,
文件编号 varchar(10),
文件简要 varchar(10),
创立日期 smalldatetime
)
insert into D values( 'File006 ', '测试一 ', '2007-04-01 ')
insert into D values( 'File005 ', '测试二 ', '2007-04-05 ')

create table E
(
序号 int identity primary key,
父序号 int references D(序号),


内容 varchar(20),
概况 varchar(20)
)
序号 父序号 内容 概况
insert into E values(1, '测试扩展一 ', '扩展 ')
insert into E values(2, '测试扩展二 ', '扩展二 ')

select a.目录编号, a.目录名称, b.文件编号, b.文件名称, bb.文件编号 as '子文件编号 ', bb.文件名称 as '子文件名称 ',d.文件简要, e.内容
from a left join b
on a.目录编号 = b.所属目录
left join b as bb
on b.文件编号 = bb.父级目录
left join D
on bb.文件编号 = d.文件编号
left join e
on d.序号 = e.序号
where b.父级目录 = '0 '

热点排行