sql server两张表的关联查询,急用,在线等待???

fwq11223344 2013-02-22 10:03:13
现在又两张数据表,如下OA_Group和RS_YGB的部分内容,表中要用到的字段信息如下4个
======OA_Group表信息=======================================================
ZWBH 职务编号 nvarchanr
QXLB 权限类别 nvarchanr

SELECT ZWBH,QXLB FROM OA_Group
ZWBH QXLB
2 0654,0655,0656,0657,0658,0659,0660,0661,0662
3 0202,0203,0204,0206,0209,0210,0211,0407,0423,0425
......
=======RS_YGB表信息======================================================
grouplist 职务分组列表 nvarchanr
YGBH 员工编号 int

SELECT grouplist,YGBH FROM RS_YGB
grouplist YGBH
2,3,1273,1275,1288,1291,1309,1328,1332,1354 638
3,1289,1273,1308,1316,1328,1338,1307,1388,1302,1333 128541
......
=========================================================================


我想是通过ZWBH(职务编号)和grouplist(职务分组列表)的对应关系,得到QXLB(权限类别里通过符号分割开的明细)和YGBH(员工编号)的一一对应关系?谢谢了?

...全文
378 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fwq11223344 2013-02-23
  • 打赏
  • 举报
回复
很好,问题已经解决,谢谢斑竹DBA_Huangzj和peng13nannan,学习了。
楠_ 2013-02-22
  • 打赏
  • 举报
回复
ZWBH QXLB grouplist YGBH
2 0654,0655,0656,0657,0658,0659,0660,0661,0662 2,3,1273,1275,1288,1291,1309,1328,1332,1354 638
3 0202,0203,0204,0206,0209,0210,0211,0407,0423,0425 2,3,1273,1275,1288,1291,1309,1328,1332,1354 638
3 0202,0203,0204,0206,0209,0210,0211,0407,0423,0425 3,1289,1273,1308,1316,1328,1338,1307,1388,1302,1333 128541
楠_ 2013-02-22
  • 打赏
  • 举报
回复
你看这样行不行
CREATE TABLE OA_Group(ZWBH NVARCHAR(4000), QXLB NVARCHAR(4000))
CREATE TABLE RS_YGB(grouplist NVARCHAR(4000) , YGBH NVARCHAR(4000))
go
insert into OA_Group
select '2','0654,0655,0656,0657,0658,0659,0660,0661,0662'
union all
select '3','0202,0203,0204,0206,0209,0210,0211,0407,0423,0425'

insert into RS_YGB
select '2,3,1273,1275,1288,1291,1309,1328,1332,1354','638'
union all
SELECT '3,1289,1273,1308,1316,1328,1338,1307,1388,1302,1333','128541'

go


select *
from OA_Group t1
left join RS_YGB t2 on CHARINDEX(','+T1.ZWBH+',',','+T2.grouplist+',')>0
go

drop TABLE OA_Group
drop TABLE RS_YGB


發糞塗牆 2013-02-22
  • 打赏
  • 举报
回复
你先这样拆出来吧。然后再匹配
----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2013-02-22 17:00:18
-- Version:
--      Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) 
--	Jun 17 2011 00:54:03 
--	Copyright (c) Microsoft Corporation
--	Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1, v.721)
--
----------------------------------------------------------------
--> 测试数据:[huang]
if object_id('[huang]') is not null drop table [huang]
go 
create table [huang]([QXLB] varchar(44))
insert [huang]
select '0654,0655,0656,0657,0658,0659,0660,0661,0662'
--------------开始查询--------------------------

SELECT  SUBSTRING([QXLB], number, CHARINDEX(',', [QXLB] + ',', number) - number) AS [QXLB]
FROM    huang a ,
        master..spt_values
WHERE   number >= 1
        AND number < LEN([QXLB])
        AND type = 'p'
        AND SUBSTRING(',' + [QXLB], number, 1) = ','
----------------结果----------------------------
/* 
QXLB
--------------------------------------------
0654
0655
0656
0657
0658
0659
0660
0661
0662
*/
fwq11223344 2013-02-22
  • 打赏
  • 举报
回复
以前设计的数据库,没办法改,只能看看有什么号方法没有??
asdf147asdf 2013-02-22
  • 打赏
  • 举报
回复
数据库设计严重不合理,建议先把有逗号的项拆分为多行。

34,588

社区成员

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

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