1
我在爲此創建查詢時被卡住了。下面是表格。使用連接檢查多行
CREATE TABLE [dbo].[Mst_Conflict_Roles]
(
[CRLm_ID] [dbo].[ITS_BID] IDENTITY(1,1) NOT NULL,
[CRLm_Roles] [varchar](10) NOT NULL,
[CRLm_Description] [varchar](200) NULL,
[CRLm_Added_By] [dbo].[ITS_UserID] NOT NULL,
[CRLm_Added_Dt] [dbo].[ITS_Datetime] NOT NULL,
[CRLm_Last_Updated_By] [dbo].[ITS_UserID] NULL,
[CRLm_Last_Updated_Dt] [dbo].[ITS_Datetime] NULL,
[CRLm_data_del] [dbo].[ITS_TID] NOT NULL,
CONSTRAINT [PK_Mst_Conflict_Roles]
PRIMARY KEY CLUSTERED ([CRLm_ID] ASC)
) ON [PRIMARY]
INSERT INTO [Mst_Conflict_Roles]
VALUES ('2,113', 'Scheduler - Auditor', 1, GETDATE(), 1, GETDATE(), 0),
('110,113','AE - Scheduler',1,GETDATE(),1,GETDATE(),0),
('2,121','Auditor - Vendor CAP User',1,GETDATE(),1,GETDATE(),0),
('8,9','AM - AC',1,GETDATE(),1,GETDATE(),0)
declare @userRole as table(userID int, userRole int)
Insert into @userRole values (1, 2),(1, 113),(1, 8),(1, 9),(1, 50),(2, 110),(2, 50),(3, 2),(3, 121)
select * from @userRole
邏輯:如果用戶角色(UserRole的)匹配衝突表的角色(CRLm_Roles),然後記錄必須出現在輸出表。
輸出
UserID CRLm_ID CRLm_description
1 1 2,113
1 4 8,9
3 3 2,121
誰能告訴我我該怎麼處理這個?
閱讀[?是存儲在數據庫中列分隔列表真的那麼壞(HTTP:// stackoverflow.com/questions/3653462/is-storing-a-delimited-list-in-a-database-column-really-that-bad),你會看到很多原因,爲什麼這個問題的答案是**絕對是!** –
@ZoharPeled:是的,但我們可以拆分逗號分隔值s到不同的行,然後使用連接進行匹配。這就是我面臨的問題,就好像用戶具有兩個不同行中的角色。 –