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
운영게시판
최근게시물
PostgreSQL Q&A 8764 게시물 읽기
No. 8764
outer join 관련 쿼리 조언부탁드립니다.
작성자
지우개
작성일
2011-01-21 17:52
조회수
7,577

정산을 위한 판매기록을 위한 쿼리를 만드는중 다음과 같은 내용이 좀 헷갈려서요.

질문의 요지는 

 

LEFT OUTER 문구에서 우측에 오는 테이블의 조건절에 두개이상의 테이블로 필터링 하는 문법입니다.

즉, A LEFT OUTER JOIN B ON A.id = B.A_ID (AND B.id = C.B_ID AND C.date = '1월 1일')

에서 위 붉은색부분에 대항하는 바른 문법입니다. 

 

 

혹 질문이 부족할 수 있어 자세한 설명을 하나 들면

아래와 같이 A , B 두개의 테이블이 있고 A와 B는 1:N 의 관계입니다.

테이블 A 테이블 B
과일 사과
  수박
자동차 트럭
  버스

 

그리고 다음과 같이 판매기록(일시, 상품명, 가격)이 다음과 같이 테이블 C에 있습니다.

1월 1일 , 사과 , 500원

1월 1일 , 트럭 , 500원

1월 1일 , 사과 , 500원

1월 2일 , 트럭 , 1000원

1월 2일 , 수박 , 700원

 

원하는 결과는 아래와 같이 1월1일의 과일 판매현황(상품, 판매수, 가격합) 입니다. 

사과 , 2개 , 1000원 

수박 , 0개, 0원

 

left outer 를 사용해서 

FROM A 

    LEFT OUTER JOIN B ON B.id = A.id

    LEFT OUTER JOIN C ON B.id = C.id AND C.date = '1월 1일'

이렇게 하니 A에 대해서 B 와 C가 모두 걸려 B = C 의 관계가 적용되지 않더라고요.

 

그렇다고 아래와 같이 서브쿼리를 이용하니 데이타가 많아지니 엄청 늦어지고.

 

select

  B.name,

  (select count(*) from C where .. ) as cnt

  (select sum(price) from C where .. ) AS price

 

고수분들의 도움을 기다립니다.

감사합니다.

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

From B 로 하시고,
상위 구분과 상품명을 그룹으로 거시고,
join을 A로하셔서
Where절에 과일인지 자동차인지 조건주시고,
B와 C를 Join하셔서 B의 그룹의 Count를 수량, (Count  *  단가)를 금액으로 하시면 될거같은데요.
그리고, C와 조건걸때는 B의 id아래의 하부 PKey가 하나더 있어야될거같은데요..
A의 과일,자동차등 구분 필드가 id라면,
B와 C에는 id와 수박,자동차,트럭...구분 필드가 Pkey로 잡혀있어야된다는거죠.

이기자(k3i2)님이 2011-01-23 23:51에 작성한 댓글입니다.
이 댓글은 2011-01-23 23:56에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
8770윈도우에서 DB 설치 관련 질문입니다.
최진우
2011-02-08
8043
8766vb.net에서 pgsql의 function 호출시 파라메터값 어떻게 넣어줘야하나요? [1]
이상은
2011-01-26
8821
8765말도 안되는거 같은데, 혹시나 해서... [2]
이기자
2011-01-22
7651
8764outer join 관련 쿼리 조언부탁드립니다. [1]
지우개
2011-01-21
7577
8763필드의 값을 더해서 업데이트? [2]
souler
2011-01-19
7698
8762Oracle To PostgreSQL시 질문입니다.
포스팅
2011-01-19
7944
8761특정테이블 하나만 . . ramdisk에 올려서 사용할 수 있나요 . .. ^^ [1]
롱다리
2011-01-15
7576
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.030초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다