database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 40250 게시물 읽기
No. 40250
한개의 테이블에서 데이터값을 비교한후 다시 그 테이블에 저장하는 쿼리 문제입니다..
작성자
WindRider
작성일
2013-09-06 10:59ⓒ
2013-09-06 11:00ⓜ
조회수
5,834
update /*+ bypass_ujvc */
(
select a.class1, a.class2, a.class3, a.class4, a.class5, a.depth, b.chk_cls from classfication_plan a, 
(select class1, class2, class3, class4, class5, chk_cls, depth, class_nm
from(
select class1, class2, class3, class4, class5, 
  (decode(class1, '00', '0', '1') + decode(class2, '00', '0', '1') + decode(class3, '00', '0', '1') + decode(class4, '000', '0', '1') + decode(class5, '000', '0', '1')) 
  as chk_cls, 
  class_nm, depth
from classfication_plan) order by class1, class2, class3, class4, class5) b
where a.class1 = b.class1 
and a.class2 = b.class2 
and a.class3 = b.class3 
and a.class4 = b.class4 
and a.class5 = b.class5
)
set a.depth = b.chk_cls
 
이게 기본 쿼리입니다.
 
 
classfication_plan 이라는 테이블에 depth 가 있는데, class1,2,3,4,5 의 값을 보고 00 이나 000 이면 상관없고 다른 값이면 1을 가져온후 chk_cls 라는 컬럼에 합쳐서 값을 가지고 옵니다.
 
이후 depth 라는 컬럼과 비교 혹은 비교도 필요없이 그대로 값을 update 하는 쿼리를 짜려고 하는데..열명이 부족하다고 뜨던가..아니면 문제가 생겨버립니다.
 
가운데 b 로 명명된 select 문은 이상이 없는데..여튼, 기본적인 로직은 메뉴에 대한 depth 를 넣는 건데..어디가 문제인지..후우...
 
고수분들의 도움을 요청합니다..
이 글에 대한 댓글이 총 1건 있습니다.

원하시는건

depth 컬럼에  class1,2,3,4,5 컬럼값을 체크해서 '00', '000' 이 아닌수를 update 해주는것 같은데요.

update 쿼리가 복잡한것 같네요.

아래와 같이 해도 상관없을것 같은데요.


-- SELECT SQL

SELECT depth, class1, class2, class3, class4, class5
     , decode(class1,  '00', 0, 1) 
     + decode(class2,  '00', 0, 1) 
     + decode(class3,  '00', 0, 1) 
     + decode(class4, '000', 0, 1) 
     + decode(class5, '000', 0, 1) chk_cls
  FROM classfication_plan

-- UPDATE SQL
UPDATE classfication_plan
   SET depth = decode(class1,  '00', 0, 1) 
             + decode(class2,  '00', 0, 1) 
             + decode(class3,  '00', 0, 1) 
             + decode(class4, '000', 0, 1) 
             + decode(class5, '000', 0, 1)
아린(arin76)님이 2013-09-06 11:19에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
40253procedure 삭제 쿼리 질문입니다. [2]
우리누리
2013-09-10
6341
40252처음으로 글을 올립니다. 세로 data 가로 변형 [1]
안윤준
2013-09-10
6577
40251oracle 접속오류 sysdba접속 시 ORA-01031:insufficient privileges [1]
황선영
2013-09-09
6679
40250한개의 테이블에서 데이터값을 비교한후 다시 그 테이블에 저장하는 쿼리 문제입니다.. [1]
WindRider
2013-09-06
5834
40249오라클 -> 인포믹스 쿼리문 변경 질문
사바직자
2013-09-05
5078
40248쿼리 관련 질문입니다. 일별 데이터를 뽑는.. [5]
배현석
2013-09-05
5737
40246잘 아시겠지만, 주민번호... 검증 알고리즘(algorism)입니다.
박재덕
2013-09-03
6606
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다