2017-04-01 6 views
0

SQLite에서 coalesce() 또는 ifnull()을 사용하여 LEFT JOIN의 모든 null 값을 0으로 설정하려고합니다. 나는이 질문이 많은 것을 알고 있지만, 나는 붙어있다.LEFT JOIN 2 테이블에서 값이 NULL이면 0을 어떻게 반환합니까?

BUDGET 
amount category 
2  food 
2  book 
2  movie 

EXPENSE 
amount category 
2  food 
2  book 

EXPECTED RESULT 
budsum budcat expsum 
2  food 2 
2  book 2 
2  movie 0 

이것은 내가 수행 한 쿼리입니다. 대신 sum

SELECT SUM(budget.amount) AS budsum, budget.category AS budcat, 
SUM(coalesce(expense.amount,0)) AS expsum 
FROM budget 
LEFT JOIN expense 
ON budcat=expense.category 
GROUP BY budcat; 

SELECT SUM(budget.amount) AS budsum, budget.category AS budcat, 
SUM(coalesce(expense.amount,0)) AS expsum 
FROM budget 
LEFT JOIN expense 
ON budcat=expense.category 
GROUP BY budcat; 

답변

0

사용 coalesce.

select SUM(budget.amount) as budsum, 
    budget.category as budcat, 
    coalesce(SUM(expense.amount), 0) as expsum 
from budget 
left join expense on budget.category = expense.category 
group by budget.category; 
+0

이전에 시도했습니다. 작동하지 않았다. 일부 컨텍스트에서 데이터베이스 용 Cordova-sqlite-storage를 사용하여 Ionic2 앱을 코딩했습니다. –

+0

@AhmadZul - 작동하지 않았습니까? 여전히 null이 생성 되었습니까? 실패 했나요? – GurV

+0

그것은 실패하지 않았습니다. 방금 0 값을 반환하지 않았습니다. –