제목 | join한 값 뿐만 아니라 그 해당되는 테이블에 있는 값 모두 출력하고 싶습니다 | ||
---|---|---|---|
카테고리 | DB | ||
글쓴이 | AMKORDB | 작성시각 | 2017/01/23 14:06:12 |
|
|||
SELECT * FROM member IN ( SELECT COUNT(case when (B.state = 'ready') then 1 end ) as ready_pay , COUNT(case when (B.state = 'paid') then 1 end ) as paid_pay FROM member as A INNER JOIN payment as B ON A.member_id = B.member_id )
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문 지적 부탁드립니다. |
|||
다음글 | 코드이그나이터를 위한 최적의 도구는? (7) | ||
이전글 | 제가 웹서버만들고 싶은데요 (2) | ||
배강민
/
2017/01/23 14:13:20 /
추천
0
|
AMKORDB
/
2017/01/23 14:27:26 /
추천
0
member 테이블에 총 12 행 이 있는데
문제는 1행만 나옵니다 ㅠ,ㅠ |
배강민
/
2017/01/23 14:31:48 /
추천
0
가 열이 아니라 행인건가요. payment과 매칭되는것만이 아니라 다른것도 나오고 싶으신거죠? 그렇다면 left join을 알아보셔요 |
AMKORDB
/
2017/01/23 14:32:34 /
추천
0
SELECT
이렇게 해보았지만 ㅠ,ㅠ 1행만 나오네요 ㅠ,ㅠ |
kaido
/
2017/01/23 16:03:58 /
추천
0
SELECT COUNT(case when (B.state = 'ready') then 1 end ) as ready_pay , COUNT(case when (B.state = 'paid') then 1 end ) as paid_pay, A.* FROM member as A LFTE JOIN payment as B ON A.member_id = B.member_id GROUP BY A.member_id
group by 사용 법은 2가지 입니다. 유일성 있는 데이터를 추츨 하기 위해 중복 데이터 접어두기 방법과 합쳐진 데이터를 유일성 있게 보이기 위해 펼쳐두기 방법.
count 와 같이 사용 하면 펼치는 기능이 있습니다.
그리고 제가 지금 알려드린것은 제가 보기엔 원하시는 결과물에 정답이 아닙니다. ready_pay 와 paid_pay 는 서브 쿼리로 해결 하셔야 할 것입니다.
select 절에서 사용 하는 서브 쿼리에 대해서 한번 알아보시면 풀리실 것입니다. |
위 쿼리가 에러없이 실행이 되나요?
IN 절 안의 서브쿼리에 select 필드가 2개라서 에러날듯한데요? 아닌가 흠
SELECT
COUNT
(
case
when
(B.state =
'ready'
)
then
1
end
)
as
ready_pay ,
COUNT
(
case
when
(B.state =
'paid'
)
then
1
end
)
as
paid_pay,
A.*
FROM
member
as
A
INNER
JOIN
payment
as
B
ON
A.member_id = B.member_id
위를 원하시는게 아닌가 싶네요. 아니시라면 모르겠네요.
JOIN을 한다고 JOIN한 필드만 나오는건 아닙니다.