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 30724 게시물 읽기
No. 30724
두개에 데이블 조인해서 합산하기
작성자
김양훈(yanghun72)
작성일
2014-05-15 10:47
조회수
9,089

 

두개에 Table

// table1 

no    name  

1   홍길동

2   김동순

3  이민우

4  김동순  

//   table2

no     day                         su

1       2014-03-02          2

1      2014-03-02          3

2       2014-03-02          3

3       2014-03-02          4

 

 

두개에 화일을 조인해서   

table1  에 있는 결과값을 가져오는  문장인데

그날짜에   자료가 있으면 상관이 없은데

그날짜에 자료가 없으면  0 이란값을 갖고오고 싶은데   

 

2014-03-02

1   홍길동     5

2   김동순     3

3  이민우    4

4  김동순     0

 

2014-03-03 일경우는

1   홍길동     0

2   김동순     0

3  이민우    0

4  김동순     0

이런결과를 원하는  문장인데

select   a.no,a.name,sum(b.su)   from  table1  a 

left join  table2  b  on a.no=b.no

where  b.day='2014-03-03'

이런식으로 하니까  자료가 없으면  아예 안불러오구 도움부탁드립니다.

 

 

 

 

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

JOIN 구문에서 ON 절과 WHERE 절의 쓰임새를 구분해야 합니다.
조인조건은 ON 절에
필터조건은 WHERE 절에
날짜조건은 필터로 사용하면 걸러지게 됩니다.
조인조건으로만 사용해야 합니다.
WHERE 를 AND 로 바꾸세요.

마농(manon94)님이 2014-05-15 11:35에 작성한 댓글입니다.

우선 WHERE 절 없이 다음의 SELECT문을 실행해보세요.

 

SELECT  a.no, a.name, b.day, b.su
FROM  table1  a LEFT JOIN  table2  b  ON a.no = b.no

 

그럼 '2014-03-03'에 해당되는 b.su가 모두 NULL일 것입니다.

NULL에 대고 WHERE b.day='2014-03-04' 조건을 주었기 때문에 아무 결과가 없는 것입니다.

 

마농님 말씀대로 WHERE를 AND로 변경하시면 원하는 결과가 나옵니다.

 

참고1. "GROUP BY"가 빠졌는데 이건 실수시겠죠?

참고2. SUM(IFNULL(b.su, 0)) 이렇게 사용하시는 것이 좋겠습니다.

 
허정수(wertyu)님이 2014-05-16 13:55에 작성한 댓글입니다.
이 댓글은 2014-05-16 13:59에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
30727mysql 에서의 형변환 [1]
가비닷
2014-05-26
9192
30726Compilation Error 질문이요
권진찬
2014-05-23
8515
30725테이블 union 질문입니다. [1]
김민호
2014-05-22
8889
30724두개에 데이블 조인해서 합산하기 [2]
김양훈
2014-05-15
9089
30723MySQL 트렌젝션사용예제인데 문제점있을까요?
이재식
2014-05-07
9339
30721mysql 5.1.4버젼사용중 select [2]
이재식
2014-04-30
9068
30720code값 치환 관련 쿼리 질문. [1]
열혈파넵
2014-04-28
8988
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.050초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다