子查询返回多行mysql
以下查询必须返回所有客户信息,但不幸的是,子查询返回多行错误:子查询返回多行mysql,mysql,Mysql,以下查询必须返回所有客户信息,但不幸的是,子查询返回多行错误: SET @total=0; SET @amountDue=0; SELECT c.customer_name, l.paid_date, IF(@total=0,((SELECT ll.total_amount FROM payment_loan ll join payments_details le
SET @total=0;
SET @amountDue=0;
SELECT c.customer_name,
l.paid_date,
IF(@total=0,((SELECT ll.total_amount
FROM payment_loan ll
join payments_details le on ll.loan_id=le.loan_id)-
(SELECT ll.installment_amount_month
FROM payment_loan ll
join payments_details le on ll.loan_id=le.loan_id)*
(SELECT ll.total_installments
FROM payment_loan ll
join payments_details le on ll.loan_id=le.loan_id)),
(SELECT ll.installment_amount_month
FROM payment_loan ll
join payments_details le on ll.loan_id=le.loan_id)) AS AmountDue,
@amountDue:=@amountDue+(SELECT IF(@total=0,((SELECT ll.total_amount
FROM payment_loan ll
join payments_details le on ll.loan_id=le.loan_id)-
(SELECT ll.installment_amount_month
FROM payment_loan ll
join payments_details le on ll.loan_id=le.loan_id)*
(SELECT ll.total_installments
FROM payment_loan ll
join payments_details le on ll.loan_id=le.loan_id)),
(SELECT ll.installment_amount_month
FROM payment_loan ll
join payments_details le on ll.loan_id=le.loan_id)) )as ComulativeDue,
l.amount AS AmountPaid,
@total := @total +l.amount AS comulativePaid,
(@total/@amountDue ) as percentage
FROM payments_details l
join customer c on c.customer_id= l.customer_id
where c.customer_id=l.customer_id
GROUP BY l.paid_date
ORDER BY l.paid_date
DESC LIMIT 1 ;
它看起来更像一个段落,而不是一个查询。有许多子查询。您确定所有的表都只返回一行吗?如果需要,不应该返回一行。对于所有的表,添加1可以发布表声明和一些示例数据。但从逻辑上看,您的子查询似乎都在检查贷款的付款情况,我希望贷款有很多付款。因此,每个子查询将返回多行。此外,子查询甚至不会检查它们是否为同一客户付款。