简体   繁体   中英

mysql error inner join

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

this query show the error Invalid use of group function. Can you help me to solve this problem

Just replace JOIN table with subquery which counts sum for each 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

尝试使用HAVING代替WHERE。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM