2013-03-20 10 views
1

"잔액"이라는 새로운 열에 새로운 값을 표시하기 위해 여러 행의 금액을 뺀 mysql 쿼리가 있습니다. Balance> '0'인 레코드 만 표시하고 싶습니다. 아래 참조 :기능 "as as column"내 mysql 구문

SELECT 
visits.visit_id, 
visits.payment_increments, 
((visits.total - visits.paid) - SUM(payments.amount)) AS Balance, 
schedule.schedule_date 
FROM 
visits 
    LEFT OUTER JOIN 
schedule ON visits.schedule_id = schedule.id 
    LEFT OUTER JOIN 
payments ON visits.visit_id = payments.visit_id 
WHERE 
Balance>'0' 
GROUP BY visits.visit_id 

WHERE 문에 내 새 열을 사용할 수있는 방법이 있습니까? 지금 당장은 오류입니다.> 오류 코드 : 1054 'where 절'에 'Balance'알 수없는 열이 있습니다.

도움을 주시면 감사하겠습니다.

답변

2

사용 HAVING 대신 WHERE

GROUP BY ... HAVING Balance >0 

주의 :HAVING 작품는 기본 테이블의 컬럼 아니다 균형 ..Since 비 테이블 컬럼으로 작동하므로이 때문에, 가상의 열입니다 이 테이블 열이 HAVING 단지 WHERE 등의 작품으로 작동합니다

Read more...

+0

전체 열 이름을 언급 그냥 같은 SQL 쿼리를 당신이 사용할 수 있습니다! 고맙습니다. 임시 뇌 방귀에 대해 죄송합니다. –

1
SELECT 
visits.visit_id, 
visits.payment_increments, 
((visits.total - visits.paid) - SUM(payments.amount)) AS Balance, 
schedule.schedule_date 
FROM 
visits 
    LEFT OUTER JOIN 
schedule ON visits.schedule_id = schedule.id 
    LEFT OUTER JOIN 
payments ON visits.visit_id = payments.visit_id 

GROUP BY visits.visit_id HAVING Balance>'0' 
+0

이것은 그 것이다! 정말 고맙습니다! –

0

당신이 속임수를 썼는지

SELECT 
    visits.visit_id, 
    visits.payment_increments, 
    ((visits.total - visits.paid) - SUM(payments.amount)) AS Balance, 
    schedule.schedule_date 
    FROM 
    visits 
    LEFT OUTER JOIN 
    schedule ON visits.schedule_id = schedule.id 
    LEFT OUTER JOIN 
    payments ON visits.visit_id = payments.visit_id 
WHERE 
    ((visits.total - visits.paid) - SUM(payments.amount))>'0' 
GROUP BY visits.visit_id