2014-04-24 3 views
0

저는 필드를 var로 합친 다음 동일한 select에서 그 var를 계산에 사용하는 쿼리가 있습니다. 하지만 그것은 어떤 이유로 var를 인식하지 못합니다. 선택을 구성하는 다양한 방법을 시도했지만 var를 인식 할 수는 없습니다!같은 쿼리에서 사용되는 var가 존재하지 않는다고 말하는 이유는 무엇입니까?

문제의 var는 the_po_cost입니다. 어떤 도움, 대단히 감사!

SELECT `orders`.`id`, accounts.account_name, orders.status, orders.order_type, DATE_FORMAT(date_issued, '%d-%m-%Y'), `cost`, SUM(po.po_cost) AS the_po_cost, `total_cost`, (orders.cost - (if null(cc.cc_cost, 0) + if null(the_po_cost, 0))) AS Margin, `users`.`email` 
FROM (`orders`)JOIN `accounts` ON `accounts`.`account_id` = `orders`.`account_id` 
JOIN `users` ON `users`.`id` = `orders`.`account_manager_id` 
LEFT OUTER JOIN `po` ON `po`.`order_id` = `orders`.`id` 
LEFT OUTER JOIN `cc` ON `cc`.`order_id` = `orders`.`id` 
GROUP BY `orders`.`id` 
ORDER BY `orders`.`id` desc 
LIMIT 10 
+2

문제는 정의 된 동일한 '선택'에서 열 별칭을 사용할 수 없다는 것입니다. –

+0

안녕하세요, 알았습니다. 지금 어떻게해야할까요, 설명해 주신 덕분에 @GordonLinoff !! – John

답변

0

수학 섹션에서 합계를 계산해야합니다.

SELECT `orders`.`id`, accounts.account_name, orders.status, orders.order_type, DATE_FORMAT(date_issued, '%d-%m-%Y'), `cost`, `total_cost`, (orders.cost - (if null(cc.cc_cost, 0) + if null(SUM(po.po_cost), 0))) AS Margin, `users`.`email` 
FROM (`orders`)JOIN `accounts` ON `accounts`.`account_id` = `orders`.`account_id` 
JOIN `users` ON `users`.`id` = `orders`.`account_manager_id` 
LEFT OUTER JOIN `po` ON `po`.`order_id` = `orders`.`id` 
LEFT OUTER JOIN `cc` ON `cc`.`order_id` = `orders`.`id` 
GROUP BY `orders`.`id` 
ORDER BY `orders`.`id` desc 
LIMIT 10 
관련 문제