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
운영게시판
최근게시물
MS-SQL Q&A 1257 게시물 읽기
No. 1257
두개의 쿼리를 합치려고 합니다
작성자
이원태(dudayfire)
작성일
2004-03-24 21:23ⓒ
2004-03-24 21:31ⓜ
조회수
4,928

SELECT SUM(S.가격) AS 합계, P.사원, P.제품, P.년도 FROM 테이블2 AS S, 테이블1 AS P

WHERE S.사원 = P.사원 AND S.제품 = P.제품 AND S.년도 = P.년도

GROUP BY P.사원, P.제품, P.년도
---------------------------------------------------------

UPDATE 테이블1 SET 합계필드 =  (SUM(S.가격) AS 합계)

WHERE 사원 = (P.사원) AND 제품 = (P.제품) AND 년도 = (P.년도)

 

** Primary Key : 사원,제품,년도

** 테이블1 필드목록 : 년도, 사원, 제품, 합계필드, 목표필드

** 테이블2 필드목록 : 년도, 사원, 제품, 가격, 단가, 수량, 사원명, 제품명 ..... 등등

 

첫째 쿼리를 서브쿼리로 해서 합치려 합니다

첫째 쿼리의 결과 값중 첫번째 필드값테이블1합계필드에 대입하고

두번째 필드값부터 네번째 필드값까지는 WHERE 절에서 검색을 위해 써야합니다

 

프로시져에서 실행될 쿼리이므로 첫째 쿼리의 결과값을 받아서 저장 할 수가 없었습니다(배열을 못 쓰는 관계로)

그래서 부득이 서브쿼리로 합쳐야 할 것 같은데 도무지 방법을 모르겠습니다

 

고급 기술이 아닌것 같지만 아직 제가 많이 모자라서 많은 지도 편달 부탁드립니다

그럼 수고하세요

 

이 글에 대한 댓글이 총 2건 있습니다.

SQL SERVER에서는 UPDATE시 FROM 절을 사용할 수 있습니다.

(오라클은 안되지만, SQL SERVER와 SYBASE는 됩니다)

ALIAS 를 주시려면 테이블1을 아래와 같이

UPDATE 절과 FROM절에 두번 써 주셔야 합니다..

테이블2는 합계를 표현하므로 GROUP BY해서

인라인뷰(SQL SERVER에서는 유도된 테이블이라고 하죠)로

묶어주시면 가능할 것 같은데요..

 

UPDATE 테이블1
SET 합계필드 =  S.합계
FROM 테이블1 AS P,
         (SELECT 사원, 제품, 년도,
                       SUM(가격) AS 합계 
          FROM 테이블2
          GROUP BY 사원, 제품, 년도 ) S
WHERE S.사원 = P.사원
AND S.제품 = P.제품
AND S.년도 = P.년도

 

ALIAS를 주지 않으시려면

 

UPDATE 테이블1
SET 합계필드 =  S.합계
FROM (SELECT 사원, 제품, 년도,
                        SUM(가격) AS 합계 
           FROM 테이블2
           GROUP BY 사원, 제품, 년도 ) S
WHERE S.사원 = 테이블1.사원
AND S.제품 = 테이블1.제품
AND S.년도 = 테이블1.년도

 

UPDATE 절에 테이블1 을 한번만 써주시고..

WHERE에 테이블명을 직접 주셔야 합니다.

 

이유는 잘 모르겠고 이래야 정상 작동하더라구요..

아래쪽을 추천드리는 바입니다..

가객님이 2004-03-25 09:16에 작성한 댓글입니다.
이 댓글은 2004-03-25 09:17에 마지막으로 수정되었습니다. Edit

 

카암사함다.... ^^;

 

행복한 주말 보내세요...

 

이원태(dudayfire)님이 2004-03-26 16:49에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
1260Ms-SQL 2000 에서 Oracle8i로 데이터 변환(DTS)시 에러 [2]
김성진
2004-03-25
4700
1259스크랩기능
냐하하하
2004-03-25
2891
1258DTS변환시 데이터변환+서버접속가능여부를 첨가하고 싶은데요
미칠노릇
2004-03-25
3326
1257두개의 쿼리를 합치려고 합니다 [2]
이원태
2004-03-24
4928
1256cgi DB ㅡ> ms-sql DB / access DB 변환 [2]
문티스
2004-03-24
3159
1255에러 좀 누가 도와주세요 ㅠ.ㅠ
나나
2004-03-24
3488
1254바로밑에꺼 커서한건데요...도와주세요~
박인혁
2004-03-24
3588
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다