/****** Object:  Table [dbo].[Auth_Role_Page]    Script Date: 10/23/2014 16:55:25 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[Auth_Role_Page](
[role_page_idx] [int] NOT NULL,
[com_code] [nvarchar](5) NULL,--회사코드
[role_id] [nvarchar](20) NULL,--권한수준
[page_id] [varchar](8) NULL,--메뉴번호
[reg_date] [datetime] NULL,
[reg_userid] [nvarchar](20) NULL,
[pop] [char](1) NULL,
[seq] [int] NULL
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO



이런 구조의 테이블이 있습니다.

뭔가 제약 조건이 걸리긴 했는데 내용을 보니 그냥 날자를 reg_date 에 넣는것 뿐이였고

의미 없는 role_page_idx 에만 키값이 걸려있고 아무것도 안되있더군요;;

그렇다보니 아래처럼 입력할경우 중복처리가 안되버립니다.

테이블 세팅 자체에서 그룹키(?)같은게 지정되있어서 중복 안되게끔 해야하는데 

Role_Id ,Page_Id , com_code  세개 합쳐서 중복이 안되게끔..

테이블 열을 바꿀수는 없고

그룹키 지정같은걸 해야하는데 방법을 모르겠구

IF OBJECT_ID('tempdb..#tblComCode') IS NOT NULL -- 임시테이블이 있을 경우
       DROP TABLE #tblComCode                          -- 임시테이블 삭제       
CREATE TABLE #tblComCode
( com_code NVARCHAR(5))
GO
IF OBJECT_ID('tempdb..#tblRoleId') IS NOT NULL -- 임시테이블이 있을 경우
       DROP TABLE #tblRoleId                          -- 임시테이블 삭제
CREATE TABLE #tblRoleId
(Role_Id NVARCHAR(20))
GO
IF OBJECT_ID('tempdb..#tblPageId') IS NOT NULL -- 임시테이블이 있을 경우
       DROP TABLE #tblPageId                          -- 임시테이블 삭제
CREATE TABLE #tblPageId
(Page_Id NVARCHAR(4))
GO
IF OBJECT_ID('tempdb..#Auth_Role_Page') IS NOT NULL -- 임시테이블이 있을 경우

       DROP TABLE #Auth_Role_Page                          -- 임시테이블 삭제
CREATE TABLE #Auth_Role_Page
(
com_code NVARCHAR(5),
role_id NVARCHAR(20),
page_id NVARCHAR(4)
)
GO
-- 사업장 설정
INSERT INTO #tblComCode
        ( com_code )
VALUES  
( N'C001' ),--
( N'C002' ),--
( N'C003' ),--
--( N'C004' ),--
--( N'C005' ),
( N'C006' ),--
--( N'C007' ),
--( N'C008' ),
( N'C009' )--
--( N'C010' )--
GO
-- 권한 설정
INSERT INTO #tblRoleId
        ( Role_Id )
VALUES  ( N'admin' ),
   ( N'root' ),
   ( N'user' )
GO
-- 권한 설정할 메뉴
INSERT INTO #tblPageId
        ( Page_Id )
VALUES  
( N'B569' ),
( N'B896' ),
( N'B897' ),
( N'B898' ),
( N'B899' ),
( N'B865' ),
( N'B861' ),
( N'B900' )
GO

--SELECT A.com_code,B.Role_Id,C.Page_Id 
--FROM #tblComCode A
--CROSS APPLY #tblRoleId B
--CROSS APPLY #tblPageId C
--ORDER BY A.com_code,B.Role_Id,C.Page_Id

INSERT INTO Auth_Role_Page
        ( com_code, role_id, page_id )
SELECT A.com_code,B.Role_Id,C.Page_Id 
FROM #tblComCode A
CROSS APPLY #tblRoleId B
CROSS APPLY #tblPageId C
ORDER BY A.com_code,B.Role_Id,C.Page_Id

SELECT * FROM Auth_Role_Page

DROP TABLE #Auth_Role_Page 
DROP TABLE #tblPageId 
DROP TABLE #tblRoleId                          -- 임시테이블 삭제
DROP TABLE #tblComCode                          -- 임시테이블 삭제       


이미 중복된 데이터도 들어가 버렸다는것도 문제인데 중복된걸 삭제할 방법을 모르겠고


[한열만 중복된 데이터 말고 3개열을 합쳐서 비교해야하는데 그런 예제를 못찿겠고]


아무튼 많이 골치 아픈 상황이네요


중복되지 않게 넣는법과


이미 중복해서 들어간 데이터 삭제하는 법좀 알려주세요

No. Subject Author Date Views
Notice 2023년 1월 - SQLER의 업데이트 강좌 리스트 코난(김대우) 2023.01.02 602
8312 행을 열로 변환하는 쿼리 부탁드려요!!!!! [2] 진아현명 2014.10.27 2707
8311 2014 ex 에이전트 시작 문제 [3] park87 2014.10.27 2546
8310 서로다른 데이타베이스안에 공통인 테이블을 한번에 업데이트 할수 있나요? [4] 김영환_281520 2014.10.27 2597
8309 해킹 들어왔습니다.. [1] 돌브레인 2014.10.27 2727
8308 집계함수 SUM 처럼 곱셈처리 [2] 우영호수 2014.10.27 9274
8307 mdf ldf 파일로 다른 노트북에서 [1] 푸르른하늘 2014.10.26 2161
8306 트리거를 이용해서 로그 테이블에 데이터 삽입 [1] 푸르른하늘 2014.10.25 2058
8305 부분 조건 LEFT OUTER JOIN 출력 [3] park87 2014.10.24 3451
8304 그룹키 지정하는 방법, PK말구요.. [3] park87 2014.10.24 3258
8303 데이터를 편집창에 넣을때 자동으로 기호 붙이기 [5] park87 2014.10.24 2835
8302 열 '~~'이(가) 집계 함수나 GROUP BY 절에 없으므로 SELECT 목록에서 사용할 수 없습니다. [1] park87 2014.10.24 8658
8301 테이블 내에서 여러열을 기준으로 중복된 행 제거 [1] park87 2014.10.23 3051
8300 명령어로 사용자 생성 방법 질문합니다. [2] sams 2014.10.23 3156
8299 시스템 운영 중 오류 덤프가 발생했습니다. 아직모자란사람 2014.10.23 2433
» 중복 데이터 제거 및 그룹 키((?)로 재설정하기 [1] park87 2014.10.23 3104
8297 MSSQL join할 때 문제가 있습니다. [4] 임쑤 2014.10.22 3166
8296 부분 반복 쿼리 만들기 [5] park87 2014.10.22 2656
8295 초보 문의 [1] 땅훈 2014.10.22 2132
8294 모바일 게임 관련 Harlem 2014.10.21 2288
8293 초보자 질문이 있습니다 ㅠㅠ [2] 곰요 2014.10.21 2458





XE Login