2013-09-25 114 views
0

我收到了一個相當複雜的查詢(至少對我而言)。 我想創建一個準備付款的用戶列表。有2個條件需要滿足:訂單狀態應該是3,總應該更然後50.目前,我得到這個查詢(用Codeingiter活動記錄生成):加入SQL SUM問題

SELECT `services_payments`.`consultant_id` 
    , `consultant_userdata`.`iban` 
    , `consultant_userdata`.`kvk`, `consultant_userdata`.`bic` 
    , `consultant_userdata`.`bankname` 
    , SUM(`services_payments`.`amount`) AS amount 
    FROM (`services_payments`) 
    JOIN `consultant_userdata` 
    ON `consultant_userdata`.`user_id` = `services_payments`.`consultant_id` 
    JOIN `services` 
    ON `services`.`id` = `services_payments`.`service_id` 
WHERE `services`.`status` = 3 
    AND `services_payments`.`paid` = 0 
HAVING `amount` > 50 

的services_payments表包含佣金,consultant_userdata包含用戶數據,服務保存訂單數據。目前的查詢只給我1結果,而我期待4結果。

難道有人可以告訴我我做錯了什麼,以及解決方案是什麼?

+3

你缺少至少一個'GROUP BY services_payments.consultant_id,consultant_userdata.iban,consultant_userdata.kvk,consultant_userdata.bic,consultant_userdata.bankname' – rsanchez

+0

@rsanchez - 你應該提交這個答案。 – Timmytjc

回答

1

ActiveRecord的,rsanchez的回答會比較的

$this->db->group_by('services_payments.consultant_id, consultant_userdata.iban, consultant_userdata.kvk, consultant_userdata.bic, consultant_userdata.bankname');