join한 값 뿐만 아니라 그 해당되는 테이블에 있는 값 모두 출력하고 싶습니다 채택완료
kimckimc
8년 전
조회 4,878
</p><p>SELECT </p><p>COUNT(case when (B.state = 'ready') then 1 end ) as ready_pay , </p><p>COUNT(case when (B.state = 'paid') then 1 end ) as paid_pay </p><p>FROM member as A</p><p>LEFT JOIN payment as B</p><p>ON A.member_id = B.member_id </p><p>
sql문 보시면
다른테이블와 JOIN 해서 B.state = 'ready' 한 count값 (필드 ready_pay 생성)과
B.state = 'paid' 한 count 값 (필드 paid_pay 생성)을 ON A.member_id = B.member_id 통해 출력 하게 되었습니다.
그러나 이것뿐만아니라
동시에
member 안에있는 데이터 모두 출력하고 싶은데요.
ON A.member_id = B.member_id 이 조건 때문에 나머지 데이터 값은 출력이 안되서
서브쿼리 통해 할려고 하는데 이것이 맞는것인지 알고싶습니다.ㅠ.ㅠ
고수님들 ㅠ,ㅠ sql문 지적 부탁드립니다.
댓글을 작성하려면 로그인이 필요합니다.
답변 2개
채택된 답변
+20 포인트
8년 전
아래와 같이 되지 않을까요? 오타가 있을 수 있습니다.
컬럼에 서브쿼리를 쓰는 것은 성능에 영향이 있습니다.
그러므로 페이징 처리로 데이터를 줄여주셔야 합니다.
</p><p>SELECT A.*,
COUNT(SELECT case when (B.state = 'ready') then 1 end FROM payment as P WHERE P.member_id=A.member_id) as ready_pay ,
COUNT(SELECT case when (B.state = 'paid') then 1 end FROM payment as P WHERE P.member_id=A.member_id) as paid_pay
FROM member as A </p><p>
로그인 후 평가할 수 있습니다
댓글을 작성하려면 로그인이 필요합니다.
8년 전
SELECT </b></div><div><b>(SELECT COUNT(*) FROM payment AS C WHERE C.state = 'ready' AND C.member_id=A.member_id) as ready_pay ,</b></div><div><b>(SELECT COUNT(*) FROM payment AS D WHERE D.state = 'paid' AND D.member_id=A.member_id) as paid_pay,</b></div><div><b>A.* </b></div><div><b>FROM member as A</b></div><div><b>LEFT JOIN payment as B</b></div><div><b>ON A.member_id = B.member_id GROUP BY A.member_id</b></div><div><b>
로그인 후 평가할 수 있습니다
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인