2013-06-04 1 views
0

다음보기는 차이과 총 & 금액 사이에서 계산됩니다. 그러나 bill_pay_allocations에 입력 된 해당 지불이 없으면 뷰가 계산되지 않습니다. 어떻게 상응하는 지불이 없을지라도 계산을 얻을 수 있습니까?자식 레코드가없는 경우에도 차이를 계산하려면보기가 필요합니다.

SELECT 
`alphabase`.`bill_ing_sheets`.`INVOICE_NO` AS `INVOICE_NO`, 
`alphabase`.`bill_ing_sheets`.`TOTAL` AS `TOTAL`, 
`alphabase`.`bill_pay_allocations`.`AMOUNT` AS `AMOUNT`, 
`alphabase`.`bill_pay_allocations`.`AMOUNT` - `alphabase`.`bill_ing_sheets`.`TOTAL` AS `Difference` 
FROM 
`alphabase`.`bill_ing_sheets` left join `alphabase`.`bill_pay_allocations` 
ON 
`alphabase`.`bill_pay_allocations`.`BILLING_ID` = `alphabase`.`bill_ing_sheets`.`BILLING_ID` 
left join `alphabase`.`bill_payments` 
ON 
`alphabase`.`bill_payments`.`PAYMENT_ID` = `alphabase`.`bill_pay_allocations`.`PAYMENT_ID` 

답변

0

당신은 LEFT OUTER가 bill_ing_sheets 및 bill_pay_allocations 사이에 가입 사용해야합니다. 금액에 널 값을보고 0

는 또한 전파와는 bill_payments에 필요한 경우 왼쪽 외부 조인 것을 대체 할 Case 문을 사용합니다.

아래의 코드를 참조하십시오.

SELECT 
`alphabase`.`bill_ing_sheets`.`INVOICE_NO` AS `INVOICE_NO`, 
`alphabase`.`bill_ing_sheets`.`TOTAL` AS `TOTAL`, 
(case when `alphabase`.`bill_pay_allocations`.`AMOUNT` is not null then `alphabase`.`bill_pay_allocations`.`AMOUNT` else 0 end) AS `AMOUNT`, 
(case when `alphabase`.`bill_pay_allocations`.`AMOUNT` is not null then `alphabase`.`bill_pay_allocations`.`AMOUNT` else 0 end) - `alphabase`.`bill_ing_sheets`.`TOTAL` AS `Difference` 
FROM 
`alphabase`.`bill_ing_sheets` left outer join `alphabase`.`bill_pay_allocations` 
ON 
`alphabase`.`bill_pay_allocations`.`BILLING_ID` = `alphabase`.`bill_ing_sheets`.`BILLING_ID` 
left outer join `alphabase`.`bill_payments` 
ON 
`alphabase`.`bill_payments`.`PAYMENT_ID` = `alphabase`.`bill_pay_allocations`.`PAYMENT_ID` 
+0

은 대단히 감사합니다! 나는 나무 숲을 보지 못했을 것이다. 하나의 코멘트, MySQL에서, 적어도, 왼쪽 조인 및 왼쪽 외부 조인은 동일합니다. – AlphaBase

관련 문제