eu tenho 2 tabelas como essas;
faturas
id | total_amount | currency | discount
pagamentos
id | invoice | amount
Como você pode imaginar, a tabela de pagamentos mantém registros do pagamento feito em uma fatura específica.
Preciso de uma consulta para obter faturas parcialmente pagas;
SELECT
invoices.*,
SUM(payments.amount) as paid
FROM
invoices
LEFT JOIN
payments ON payments.invoice = invoices.id
GROUP BY
invoices.id
Estou conseguindo receber o valor pago com esta consulta, mas também preciso fazer algo como
WHERE paid < total_amount AND paid > 0
Mas aqui diz "Coluna desconhecida 'paga' na 'cláusula where'". Como posso conseguir esse trabalho?
Os resultados agregados não vão na cláusula WHERE, mas sim na cláusula HAVING:
EDIT: Se sua intenção é ter todos os campos de Faturas e apenas o total pago de Pagamentos, você pode tentar uma subseleção:
Esta é uma maneira:
Devido ao funcionamento do processamento lógico de consultas , colunas (como agregações) que são expressões na lista de seleção não podem ser usadas em partes da consulta que são processadas antes delas.