From 8d2324e6de6f639904d188cd432e14add4874779 Mon Sep 17 00:00:00 2001 From: Fridolin Somers Date: Tue, 8 Jan 2019 14:32:19 +0100 Subject: [PATCH] Bug 22082: ambiguous column in patron stats In Reports > Patrons statistics, the combination of activity and extended attributes generates an invalid SQL query with error : ERROR 1052 (23000): Column 'borrowernumber' in IN/ALL/ANY subquery is ambiguous This is because FROM contains tables borrowers and borrower_attributes both containing borrowernumber column. Test plan : 1) Be sure to have a patron extended attribute 2) Be sure you have some recent circulation activity 3) Go to Reports > Patrons statistics 4) Select 'active' in 'Patron activity' and 1 years of activity 5) Check 'Row' in 'Patron category' 6) Check 'Columns' in a extended attribute 7) Submit 8) Without patch you have no results, with patch you have exepected results Signed-off-by: Katrin Fischer Signed-off-by: Nick Clemens --- reports/borrowers_stats.pl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reports/borrowers_stats.pl b/reports/borrowers_stats.pl index a58ccc74d0..4b700c1c19 100755 --- a/reports/borrowers_stats.pl +++ b/reports/borrowers_stats.pl @@ -396,8 +396,8 @@ sub calculate { $strcalc .= " AND attribute_$type.attribute LIKE '" . $filter . "' "; } } - $strcalc .= " AND borrowernumber in (select distinct(borrowernumber) from old_issues where issuedate > '" . $newperioddate . "')" if ($activity eq 'active'); - $strcalc .= " AND borrowernumber not in (select distinct(borrowernumber) from old_issues where issuedate > '" . $newperioddate . "' AND borrowernumber IS NOT NULL)" if ($activity eq 'nonactive'); + $strcalc .= " AND borrowers.borrowernumber in (select distinct(borrowernumber) from old_issues where issuedate > '" . $newperioddate . "')" if ($activity eq 'active'); + $strcalc .= " AND borrowers.borrowernumber not in (select distinct(borrowernumber) from old_issues where issuedate > '" . $newperioddate . "' AND borrowernumber IS NOT NULL)" if ($activity eq 'nonactive'); $strcalc .= " AND $status='1' " if ($status); $strcalc .= " GROUP BY "; -- 2.39.5