2013-11-01 118 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