Contribution Details report fails when "Is not one of" condition is used for Groups field
how to reproduce
- run CiviCRM 5.1.2
- open Report > Contribution Reports > Contribution Details
- click on Filters tab
- scroll down to Groups field
- change condition to "Is not one of"
- choose at least one group
- click Refresh results
- result: DB Error: no such field
sql
sql error Unknown column 'group_temp_table.id' in 'where clause'
[db_error: message="DB Error: no such field" code=-19 mode=callback callback=CRM_Core_Error::handle prefix="" info="
CREATE TEMPORARY TABLE civireport_contribution_detail_temp2 DEFAULT
CHARACTER SET utf8 COLLATE utf8_unicode_ci AS SELECT SQL_CALC_FOUND_ROWS contact_civireport.sort_name as civicrm_contact_sort_name, contact_civireport.id as civicrm_contact_id, email_civireport.email as c
ivicrm_email_email, phone_civireport.phone as civicrm_phone_phone, contribution_civireport.id as civicrm_contribution_contribution_id, contribution_civireport.financial_type_id as civicrm_contribution_fin
ancial_type_id, contribution_civireport.currency as civicrm_contribution_currency, contribution_civireport.receive_date as civicrm_contribution_receive_date, contribution_soft_civireport.amount as civicrm
_contribution_total_amount, 'Soft Credit' as civicrm_contribution_contribution_or_soft, address_civireport.country_id as civicrm_address_country_id
FROM civireport_contribution_detail_temp1 temp1_civireport
INNER JOIN civicrm_contribution contribution_civireport
ON temp1_civireport.civicrm_contribution_contribution_id = contribution_civireport.id
INNER JOIN civicrm_contribution_soft contribution_soft_civireport
ON contribution_soft_civireport.contribution_id = contribution_civireport.id
INNER JOIN civicrm_contact contact_civireport
ON contact_civireport.id = contribution_soft_civireport.contact_id
LEFT JOIN civicrm_phone phone_civireport
ON (contact_civireport.id =
phone_civireport.contact_id) AND
phone_civireport.is_primary = 1
LEFT JOIN civicrm_address address_civireport
ON (contact_civireport.id =
address_civireport.contact_id) AND
address_civireport.is_primary = 1
LEFT JOIN civicrm_email email_civireport
ON contact_civireport.id = email_civireport.contact_id AND
email_civireport.is_primary = 1
WHERE (1) AND ( contribution_civireport.contribution_status_id IN (1) )
AND group_temp_table.id IS NULL
GROUP BY contact_civireport.id, contribution_civireport.id
[nativecode=1054 ** Unknown column 'group_temp_table.id' in 'where clause']"
]