关于SQL语句

zcyan666 2008-04-17 10:32:06
用户表:

用户名称 ParentID
A
A1 A
A11 A1

客户表:

客户名称 所属用户名称
客户一 A11

现在我用户名称'A'登陆进去则可以看到A11的客户,同时A1登陆进去也可看到A11的客户,请问该如何写SQL语句
...全文
127 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawugui 2008-04-18
  • 打赏
  • 举报
回复
create table tb(id varchar(10) ,   PID varchar(10))
insert into tb values('A' , null)
insert into tb values('A1' , 'A')
insert into tb values('A11', 'A1')
go

--查询指定节点及其所有子节点的函数
CREATE FUNCTION f_Cid(@ID varchar(10)) RETURNS @t_Level TABLE(ID varchar(10),Level int)
AS
BEGIN
DECLARE @Level int
SET @Level=1
INSERT @t_Level SELECT @ID,@Level
WHILE @@ROWCOUNT>0
BEGIN
SET @Level=@Level+1
INSERT @t_Level SELECT a.ID,@Level
FROM tb a,@t_Level b
WHERE a.PID=b.ID
AND b.Level=@Level-1
END
RETURN
END
GO

--调用函数查询id = 1及其所有子节点
SELECT a.* FROM tb a,f_Cid('A') b WHERE a.ID=b.ID
/*
id PID
---------- ----------
A NULL
A1 A
A11 A1

(所影响的行数为 3 行)
*/

SELECT a.* FROM tb a,f_Cid('A1') b WHERE a.ID=b.ID
/*
id PID
---------- ----------
A1 A
A11 A1

(所影响的行数为 2 行)
*/

drop table tb
drop function dbo.f_cid
-晴天 2008-04-17
  • 打赏
  • 举报
回复
登录后获得客户名称,设存放于变量 @id,执行下面句子可以看到想要看的客户:
select 客户名称 from 客户表 where patindex('%'+@id+'%',所属用户名称)=1
-狙击手- 2008-04-17
  • 打赏
  • 举报
回复
只要查找 当节点的所有子节点就行
-狙击手- 2008-04-17
  • 打赏
  • 举报
回复
--生成测试数据
create table BOM(ID INT,PID INT,MSG VARCHAR(1000))
insert into BOM select 1,0,NULL
insert into BOM select 2,1,NULL
insert into BOM select 3,1,NULL
insert into BOM select 4,2,NULL
insert into BOM select 5,3,NULL
insert into BOM select 6,5,NULL
insert into BOM select 7,6,NULL
go

--创建用户定义函数用于取每个父节点下子节点的采购配置信息
create function f_getChild(@ID VARCHAR(10))
returns @t table(ID VARCHAR(10),PID VARCHAR(10),Level INT)
as
begin
declare @i int
set @i = 1
insert into @t select ID,PID,@i from BOM where PID = @ID

while @@rowcount<>0
begin
set @i = @i + 1

insert into @t
select
a.ID,a.PID,@i
from
BOM a,@t b
where
a.PID=b.ID and b.Level = @i-1
end
return
end
go

--执行查询
select ID from dbo.f_getChild(3)
go

--输出结果
/*
ID
----
5
6
7
*/

--删除测试数据
drop function f_getChild
drop table BOM

luzhide2008 2008-04-17
  • 打赏
  • 举报
回复
不太明白哦

34,588

社区成员

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

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