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
운영게시판
최근게시물
MySQL Q&A 27485 게시물 읽기
No. 27485
조인한 결과가 제가 원하는거랑 틀린데 어떻게하면 제대로 나올까요?
작성자
아직도서툴러
작성일
2008-03-28 00:18
조회수
2,958

가맹점별로 총 몇건의 신청이 있었고 그 중 실제로 발급된건 몇건인가...하는 통계페이지를 만들려고 합니다.
근데 실제 발급된 건과 포인트합계의 표시가 이상하게 됩니다.


*** company 테이블***
----------------------------------- 
  no  |        name       
-----------------------------------
  1   |  베스킨라벤스
  2   |  롯데리아
  3   |  파리바게트


*** applic 테이블***
-------------------------------------------------- 
  no  |        jehu          |    type        |    point
--------------------------------------------------
  1  |  베스킨라벤스    |  신청           |        0
  2  |  베스킨라벤스    |  발급           |    100
  3  |  롯데리아          |  신청           |        0
  4  |  베스킨라벤스    |  발급안됨     |        0


*** card 테이블***
-------------------------------------------------- 
 no  |  applic_no  |        jehu          |    point
-------------------------------------------------
  1   |      2          |  베스킨라벤스    |    100


company 은 가맹점 정보가 들어가는 테이블,
applic은 카드신청관련 정보가 모두 쌓이는 테이블,
card는 발급된 카드들의 정보만 따로 모아둔 테이블입니다.

 

SELECT T1.name, count(T2.no) as cno01, count(T3.no) as cno02, sum(T3.point) as allpoint FROM company AS T1 left join applic AS T2 on T1.name = T2.jehu left join card AS T3 on T2.jehu = T3.jehu WHERE 1 GROUP BY T1.name
로 쿼리문을 썼더니
    ---------------------------------------------------------- 
          제휴사명        |  총건수  |    발급수  |    발급포인트
    ---------------------------------------------------------- 
        베스킨라벤스    |      3     |      3       |        300
        롯데리아          |      1     |      0       |           0
        파리바게트       |      0     |      0       |           0 

결과물이 이렇게 이상하게 나옵니다.

 

제가 원하는데로 제대로 나올려면 아래와 같은 모양으로 나와야되는데 말이죠...
    --------------------------------------------------------- 
          제휴사명        |  총건수  |    발급수  |    발급포인트
    --------------------------------------------------------- 
        베스킨라벤스    |      3     |      1       |        100
        롯데리아          |      1     |      0       |           0
        파리바게트       |      0     |      0       |           0

쿼리부분의 어디가 잘못된건지 좀 알려주세요.
(작업환경은 리눅스서버에, PHP 4.3.10 입니다.)

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

카티션 곱 이 일어나기때문에 결과가 그렇게 나오겟지요...

흠...부질의가 지원되는 버전이라면 부질의를 사용하시는것도 괜찮겟고요...

현재 테이블의 구조와 관계, 데이터를 보아서는 company 와 applic 테이블만으로도 충분히 원하는 결과를 뽑을수 있으실꺼 같습니다만...두테이블을 조인해서 case 문을 활용한다면...

select t1.name as 제휴사명, count(t2.jehu) as 총건수,
    sum((case t2.type when '발급' then 1 else 0 end)) as 발급건수,
    sum((case t2.type when '발급' then t2.point else 0 end)) as 발급포인트
 from company as t1 left join applic t2
  on t1.name = t2.jehu
 group by t1.name
 order by 총건수 desc


흠...

team b(teamb)님이 2008-03-28 13:14에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
27488mysql 덤프받을때 3.23.58를 5.xx로 사용하려면
초보자
2008-03-29
3256
27487자바와 mysql연동하는데에 예외처리가 났습니다....;;
유재훈
2008-03-29
3333
27486Value에 한글이 포함된 레코드 얻기(더 좋은 방법 없을까요?)
이종번
2008-03-28
3084
27485조인한 결과가 제가 원하는거랑 틀린데 어떻게하면 제대로 나올까요? [1]
아직도서툴러
2008-03-28
2958
27484디비에 입력시 한글이깨져나오는데요 밑에 질문했던사람입니다. [1]
<현>
2008-03-27
3596
27483Lost Connection 에러(델파이, Mysql)에 관해... [1]
고영호
2008-03-27
3516
27481mysql migration toolkit 을 이용해서 mssql 데이터를 가져왔는데 한글이 깨집니다.
마이그
2008-03-27
3691
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다