首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql server两张表的关联查询,用,待?

2013-02-25 
sql server两张表的关联查询,急用,在线等待???现在又两张数据表,如下OA_Group和RS_YGB的部分内容,表中要用

sql server两张表的关联查询,急用,在线等待???
现在又两张数据表,如下OA_Group和RS_YGB的部分内容,表中要用到的字段信息如下4个
======OA_Group表信息=======================================================
ZWBH      职务编号        nvarchanr
QXLB      权限类别        nvarchanr

SELECT ZWBH,QXLB FROM OA_Group
ZWBH    QXLB  
20654,0655,0656,0657,0658,0659,0660,0661,0662
30202,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(员工编号)的一一对应关系?谢谢了?

员工权限关联
[解决办法]
你先这样拆出来吧。然后再匹配

----------------------------
-- 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
*/

[解决办法]
你看这样行不行

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


热点排行
Bad Request.