Background Image

FORUM

조회 수 26010 추천 수 0 댓글 4
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
OS
Window7 32bit, Linux 64bit 등
CUBRID Ver.
[cubrid_rel] 수행 결과
CUBRID TOOL Ver.
[도움말]-[버전정보] 확인
응용 환경(API)
java, php, odbc 등 입력

* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
안녕하세요. 

문의사항이 있어 글을 남깁니다.


1. 값을 select 해 와서 그 내용을 update 시킬려고 하는데, 검색 조건에 따라서 안 될 수가 있나요?

2. select 한 값을 치환할 수 있나요? 


1. 값을 select 해 와서 그 내용을 update 시킬려고 하는데, 검색 조건에 따라서 안 될 수가 있나요?


아래는 제가 사용하는 쿼리입니다.

------------------------------------------------------------------------------------------------------

UPDATE gk_printuser B SET 

B.div_cd = (SELECT A.before_cd FROM gk_printuser A WHERE LENGTH(A.before_cd_updt) = '10')

WHERE B.print_idx < 50

------------------------------------------------------------------------------------------------------


같은 테이블에서 일어나는 액션이고, 

before_cd_updt 컬럼의 데이터의 자리수가 10자리일때 div_cd 컬럼에 값을 넣을려고 합니다.

일반 검색조건(함수를 사용하지 않은 구문)으로 했을땐 쿼리가 실행 되었는데 위 구문으로 했을때 쿼리가 실행이 안되네요.


---------------------------------------------------

오류 : 실행 오류 : -459

Query result contains more than a single tuple. 

---------------------------------------------------


2. 값을 치환할 수 있나요? 

1번 내용에서 셀렉트 낸 내용들을 'C'라는 값으로 넣고 싶습니다.

검색 결과 TRANSLATE 라는 함수를 쓰면 된다고 하는데 아래 쿼리로 사용하는게 맞나요?


------------------------------------------------------------------------------------------------------

UPDATE gk_printuser B SET 

B.div_cd = TRANSLATE((SELECT A.before_cd FROM gk_printuser A WHERE LENGTH(A.before_cd_updt) = '10'), A.before_cd, 'C')

WHERE B.print_idx < 50

------------------------------------------------------------------------------------------------------


이렇게 사용하는게 아니라면 잘못된 부분이나, 다른 함수를 알려주시면 감사하겠습니다.

빠른답변 기다리겠습니다.
감사합니다.!

  • ?
    이용미 2013.11.29 23:43

    안녕하세요.

    몇가지 질문이 있으니 확인 부탁 드립니다.

    1. 특정 값을 Select 하여, Select 된 데이터의 특정 컬럼을 변경하고 싶다는 말씀이신지요?

        발생 한 오류는 [SELECT A.before_cd FROM gk_printuser A WHERE LENGTH(A.before_cd_updt) = '10'] 질의의 결과가 두 건 이상의 결과로 출력되어 발생한 문제입니다.

    2. 해당 질의도 1번 처럼 [SELECT A.before_cd FROM gk_printuser A WHERE LENGTH(A.before_cd_updt) = '10'] 질의의 결과가 두 건 이상의 결과가 출력되어, 동일 오류가 발생할 것입니다.

     

    질의를 다시 한번 확인해 주시고, 원하시는 결과를 알려주시면 도움이 될 것 같습니다.

    감사합니다.

  • ?
    신나여 2013.12.03 20:49

    추가 질문 하나 해도 될까요? 

     UPDATE  gk_close B  SET

      B.cl_cd  = (  SELECT A.cl_cd  FROM gk_printuser A WHERE A.idx = B.idx )

    이렇게 쿼리를 진행했을때 어떤건 update가 되고 어떤건 되지 않았는데 왜그런가요?

    두 테이블 모두 idx는 PK이고, cl_cd는 not null입니다.


    update안되어 있는 데이터를  gk_printuser 테이블에 확인차 idx로 select해서 값을 확인했는데도 cl_cd값이 있는데도 update가 안되네요.

    그래서 idx값을 지정해서 아래쿼리와 같이 실행하였습니다.

     UPDATE  gk_close B  SET

      B.cl_cd  = (  SELECT A.cl_cd  FROM gk_printuser A WHERE A.idx = '3' )

    where B.idx = '3'

    이렇게 값을 직접 지정해 주었는데도 update가 안돼요.

    또 update가 된 데이터는 저렇게 직접 지정해주면 update가 돼구요..


    환장하겠네요-,-

    gk_printuser  idx 타입 : 넘버릭15, cl_cd 타입 : 바차 : 6

    gk_close idx 타입 : 넘버릭15, cl_cd 타입 : 캐릭터: 6


    답변 기다립니다.!

    감사합니다.



  • ?
    이용미 2013.12.04 00:06

    안녕하세요.


    1. UPDATE  gk_close B  SET B.cl_cd  = (  SELECT A.cl_cd  FROM gk_printuser A WHERE A.idx = B.idx )

     - gk_close, gk_printuser 테이블의 idx가 모두 1:1로 매칭 된다면 gk_close 테이블의 cl_cd 값은 모두 gk_printuser 테이블의 cl_cd 값으로 변경될 것입니다. 그러나 gk_close테이블의 idx 값 중에 gk_printuser 테이블의 idx 컬럼에 없는 값이 존재한다면, not null 조건이 있는 환경에서는 오류가 발생할 것이고요, null을 허용하는 환경에서는 매칭되지 않는 데이터는 NULL 값으로 변경이 될 것 입니다.

     - update 문 자체에는 where 조건절이 없기 때문에, 특정 값만 변경되지는 않을 것 입니다.


    2. UPDATE  gk_close B  SET B.cl_cd  = (SELECT A.cl_cd  FROM gk_printuser A WHERE A.idx = '3') where B.idx = '3'

     - gk_close, gk_printuser 테이블의 idx 값은 모두 numeric(숫자 데이터 타입)이므로, 아래와 같이 변경하여 사용하셔야 합니다.

     - UPDATE  gk_close B  SET B.cl_cd  = (SELECT A.cl_cd  FROM gk_printuser A WHERE A.idx = 3) where B.idx = 3


    확인해 보시고, 추가 문의 사항이 있으시면 댓글 주세요.

    감사합니다.

  • ?
    신나여 2013.12.03 20:39

    앗, 기본적인 사항을 확인못했네요.

    감사합니다! 잘 해결되었습니다~~


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4254
3976 tomcat7 + cubrid 1 깽즈야 2012.07.27 90888
3975 원격접속이 안되네요????????? 2 Chris 2013.07.23 89527
3974 현재 연결은 원격 호스트에 의해 강제로 끊겼습니다 1 바람바람 2013.05.29 84858
3973 CUBRID 7.3 + zeroboard XE 관리자 로그인 에러 1 윤희서 2009.01.17 83638
3972 cub_master: Cannot bind local address... aborting.... Address already in use 4 박상현 2008.11.28 83555
3971 큐브리드 다운로더 오류 발생 5 file 차오이 2008.11.22 78469
3970 zeroboard XE 설치시 'database connect fail' error 4 윤희서 2009.01.16 78158
3969 Image 데이터타입 사용방법 3 AD 2008.11.25 73843
3968 clob 문의 1 김해영 2012.11.29 73006
3967 linux server 환경에서 php 버전은 어떤걸로 선택해야하는지. 1 거기 2008.11.30 66357
3966 델파이에서는 어떻게 사용할수 있을까요? 2 이상원 2008.11.29 65556
3965 if exists 조건 처리문? 2 콩이아부지 2013.03.06 63604
3964 update 쿼리를 이용한 시리얼 수정에 관하여 1 인경수 2008.11.27 63443
3963 큐브리드 2008 설치시 윈도우 서비스에 등록되지 않습니다. 3 file 진이 2008.11.22 63162
3962 CUBRID 7.3 + zeroboard XE 관리자 로그인 에러 1 윤희서 2009.01.17 62119
3961 큐브리드 maven repository 관련 문의 3 StoneHouse 2013.04.30 61467
3960 메니저에서 접속 안되는 오류 2 유나인 2013.08.16 61065
3959 .NET DB 제어를 위한 방법. 2 우페 2008.11.23 60874
3958 JDK가 두개 설치된 경우 선택적으로 JDK를 설정 할 수 있는 방법은 없는지요 1 GoFly 2008.11.28 60605
3957 데이터 이관시 소유자 변경 가능한가요??? 1 델몬트 2013.08.08 60059
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 199 Next
/ 199

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales