1. 사용자 생성 및 권한 부여
CREATE USER asl IDENTIFIED BY [비밀번호]
DEFAULT tablespace USERS
TEMPORARY tablespace TEMP;
GRANT RESOURCE, CONNECT TO asl
2.1. 경기결과 테이블 생성
CREATE TABLE "RESULT"
("SEASON" NUMBER NOT NULL ENABLE,
"ROUND" NUMBER NOT NULL ENABLE,
"GAME" NUMBER(1 ,0 ) NOT NULL ENABLE,
"PLAYER_1_ID" VARCHAR2(100 ) NOT NULL ENABLE,
"PLAYER_1_NAME" VARCHAR2(100 ),
"PLAYER_2_ID" VARCHAR2(100 ) NOT NULL ENABLE,
"PLAYER_2_NAME" VARCHAR2(100 ),
"WINNER_ID" VARCHAR2(100 ),
"DATE" DATE ,
"UPPER_SRG" VARCHAR2(100 ),
CONSTRAINT "RESULT_PK" PRIMARY KEY ("SEASON", "ROUND", "GAME")
);
COMMENT ON COLUMN "RESULT"."SEASON" IS '시즌' ;
COMMENT ON COLUMN "RESULT"."ROUND" IS '강' ;
COMMENT ON COLUMN "RESULT"."GAME" IS '경기' ;
COMMENT ON COLUMN "RESULT"."PLAYER_1_ID" IS '선수1 아이디' ;
COMMENT ON COLUMN "RESULT"."PLAYER_1_NAME" IS '선수1 이름' ;
COMMENT ON COLUMN "RESULT"."PLAYER_2_ID" IS '선수2 아이디' ;
COMMENT ON COLUMN "RESULT"."PLAYER_2_NAME" IS '선수2 이름' ;
COMMENT ON COLUMN "RESULT"."WINNER_ID" IS '승자 아이디' ;
COMMENT ON COLUMN "RESULT"."DATE" IS '경기 날짜' ;
COMMENT ON COLUMN "RESULT"."UPPER_SRG" IS '상위_게임유일값(SEASON_ROURND_GAME)' ;
COMMENT ON TABLE "RESULT" IS '경기결과' ;
2.2. 경기결과 데이터 INSERT(8강, 4강, 결승)
INSERT INTO "RESULT" (SEASON, ROUND, GAME, PLAYER_1_ID, PLAYER_1_NAME, PLAYER_2_ID, PLAYER_2_NAME, WINNER_ID, "DATE", UPPER_SRG) VALUES (9 , 8 , 1 , 'FlaSh' , '이영호' , 'Action' , '김성대' , 'FlaSh' , TIMESTAMP '2020-03-29 00:00:00.000000' , '941' );
INSERT INTO "RESULT" (SEASON, ROUND, GAME, PLAYER_1_ID, PLAYER_1_NAME, PLAYER_2_ID, PLAYER_2_NAME, WINNER_ID, "DATE", UPPER_SRG) VALUES (9 , 8 , 2 , 'Queen' , '김명운' , 'Larva' , '임홍규' , 'Queen' , TIMESTAMP '2020-03-31 00:00:00.000000' , '941' );
INSERT INTO "RESULT" (SEASON, ROUND, GAME, PLAYER_1_ID, PLAYER_1_NAME, PLAYER_2_ID, PLAYER_2_NAME, WINNER_ID, "DATE", UPPER_SRG) VALUES (9 , 8 , 3 , 'Stork' , '송병구' , 'Light' , '이재호' , 'Light' , TIMESTAMP '2020-04-05 00:00:00.000000' , '942' );
INSERT INTO "RESULT" (SEASON, ROUND, GAME, PLAYER_1_ID, PLAYER_1_NAME, PLAYER_2_ID, PLAYER_2_NAME, WINNER_ID, "DATE", UPPER_SRG) VALUES (9 , 8 , 4 , 'ChosimZerg' , '박상현' , 'Bisu' , '김택용' , 'ChosimZerg' , TIMESTAMP '2020-04-07 00:00:00.000000' , '942' );
INSERT INTO "RESULT" (SEASON, ROUND, GAME, PLAYER_1_ID, PLAYER_1_NAME, PLAYER_2_ID, PLAYER_2_NAME, WINNER_ID, "DATE", UPPER_SRG) VALUES (9 , 4 , 1 , 'FlaSh' , '이영호' , 'Queen' , '김명운' , 'Queen' , TIMESTAMP '2020-04-12 00:00:00.000000' , '921' );
INSERT INTO "RESULT" (SEASON, ROUND, GAME, PLAYER_1_ID, PLAYER_1_NAME, PLAYER_2_ID, PLAYER_2_NAME, WINNER_ID, "DATE", UPPER_SRG) VALUES (9 , 4 , 2 , 'Light' , '이재호' , 'ChosimZerg' , '박상현' , 'Light' , TIMESTAMP '2020-04-14 00:00:00.000000' , '921' );
INSERT INTO "RESULT" (SEASON, ROUND, GAME, PLAYER_1_ID, PLAYER_1_NAME, PLAYER_2_ID, PLAYER_2_NAME, WINNER_ID, "DATE", UPPER_SRG) VALUES (9 , 2 , 1 , 'Queen' , '김명운' , 'Light' , '이재호' , 'Queen' , TIMESTAMP '2020-04-26 00:00:00.000000' , NULL );
2.3. 경기 결과 테이블 데이터 입력 사항 조회
SELECT *
FROM RESULT
ORDER BY SEASON, ROUND, GAME
3. 계층형 쿼리 사용하여 조회
WITH BASE AS (
SELECT SEASON,
ROUND,
SEASON || ROUND || GAME AS SRG,
UPPER_SRG,
GAME,
NVL2(UPPER_SRG,
ROUND || '강 ' || GAME || '경기 - ' || PLAYER_1_NAME || ' VS ' || PLAYER_2_NAME,
'결승 - ' || PLAYER_1_NAME || ' VS ' || PLAYER_2_NAME
) AS TITLE,
PLAYER_1_NAME,
PLAYER_2_NAME
FROM RESULT
)
SELECT SEASON,
ROUND,
SRG,
UPPER_SRG,
GAME,
LPAD(' ' , 2 * (LEVEL-1 )) || TITLE AS LPAD_TITLE,
LEVEL
FROM BASE
START WITH UPPER_SRG IS NULL
CONNECT BY PRIOR SRG = UPPER_SRG
ORDER BY GAME
참조namu.wiki/w/%EC%95%84%ED%94%84%EB%A6%AC%EC%B9%B4TV%20%EC%8A%A4%ED%83%80%EB%A6%AC%EA%B7%B8%20%EC%8B%9C%EC%A6%8C9?from=ASL%20%EC%8B%9C%EC%A6%8C9#s-6 https://dreamstorage.tistory.com/169 https://coding-factory.tistory.com/461