2013-02-07 1 views
1

나는 열 (a, b)이있는 테이블 A와 열 (b, c)가있는 테이블 B를가집니다. 다음과 같이하고 싶습니다.Compound mysql Select 외부 결합 후

STEP 1: do a A LEFT OUTER JOIN B ON A.b = B.b 
STEP 2: convert all c = NULL in the Joined table to c = <default_value> 
STEP 3: SUM(A.a * B.c) over the table I get after STEP 2 

하나의 복합성 문장에서이를 수행하는 빠른 방법이 있습니까?

감사합니다.

답변

1

당신은 한 쿼리에서 처음 LEFT OUTER JOIN을 세 가지 단계를 수행하고 기본 값으로 NULL 값을 설정 IFNULL을 사용할 수 있습니다, 다음 SUM 사용

SELECT 
    SUM(A.a + IFNULL(B.c, <default_value>)) 
FROM A 
LEFT OUTER JOIN B ON A.b = B.b; 

SQL 바이올린 데모 :

0
select 
    sum(A.a + IFNULL(B.c, some_default)) as some_sum 
FROM 
    A 
    LEFT JOIN B 
    ON 
     B.b = A.b 
0
select sum(A.a * (case when B.c = null then <default> else B.c end)) as joined_sum 
from A left outer join B on (A.b = B.b);