日期:2014-05-17  浏览次数:20610 次

sql server两张表的关联查询,急用,在线等待???
现在又两张数据表,如下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(员工编号)的一一对应关系?谢谢了?

员工权限关联

------解决方案--------------------
你先这样拆出来吧。然后再匹配
----------------------------
-- 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))