2013-11-01 122 views
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 

此查询显示错误无效的组功能使用。你能帮我解决这个问题吗?mysql错误内部加入

+0

你尤斯的AGG函数(如SUM()),但你不能由其他列编组的resul(如PROJECT_ID, project_name ...) – wxyz

+0

您在ORDER BY之前没有任何GROUP BY语句,我认为应该更好地执行SELECT RAND()作为rand ... ORDER BY rand –

回答

0

试着用HAVING代替WHERE。

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