1
SELECT
  bp.project_id,
  bp.project_name,
  bp.project_costing,
  bp.project_borrower_id,
  bp.member_userid,
  bp.project_staus,
  SUM(pb.payment_amount) as total 
FROM borrower_project_master as bp 
INNER JOIN payment_invest_master as pb ON bp.project_borrower_id=pb.payment_borrowerid
WHERE (
 (SUM(pb.payment_amount)/bp.project_costing)*100 < 100
  AND bp.project_staus='Y'
)
ORDER BY RAND() LIMIT 0,3

此查询显示错误 Invalid use of group 函数。你能帮我解决这个问题吗

4

2 回答 2

1

只需用子查询替换 JOIN 表,该子查询计算每个的总和payment_borrowerid

SELECT bp.project_id,bp.project_name,bp.project_costing,bp.project_borrower_id,
       bp.member_userid,bp.project_staus,pb.SUM_payment_amount as total 
    FROM  borrower_project_master as bp 
    INNER JOIN 
    ( select payment_borrowerid,SUM(payment_amount) as SUM_payment_amount
      FROM 
      payment_invest_master 
      GROUP BY  payment_borrowerid
    )
    as pb ON bp.project_borrower_id=pb.payment_borrowerid  
    WHERE (

        (pb.SUM_payment_amount/bp.project_costing)*100 < 100 
         AND bp.project_staus='Y'

        )

    ORDER BY RAND() LIMIT 0,3
于 2013-11-01T07:43:23.480 回答
0

尝试使用 HAVING 而不是 WHERE。

于 2013-11-01T07:40:14.957 回答