reinstating the HAVING clause for all AND-joined searches (the default), but checking...
authormiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 15 Dec 2005 17:01:34 +0000 (17:01 +0000)
committermiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 15 Dec 2005 17:01:34 +0000 (17:01 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@2407 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/metabib.pm

index 283c949..eb5bd9e 100644 (file)
@@ -306,8 +306,11 @@ sub multi_search_full_rec {
        my $cs_table = config::copy_status->table;
        my $cl_table = asset::copy_location->table;
 
-       my $cj = ''; $cj = 'HAVING COUNT(x.id) > 1' if ($class_join eq 'AND' && @selects > 1);
-       my $search_table = '(SELECT x.record, sum(x.sum) FROM (('.join(') UNION ALL (', @selects).")) x GROUP BY 1 $cj ORDER BY 2 DESC )";
+       my $cj = 'HAVING COUNT(x.id) = ' . scalar(@selects) if ($class_join eq 'AND');
+       my $search_table =
+               '(SELECT x.record, sum(x.sum) FROM (('.
+                       join(') UNION ALL (', @selects).
+                       ")) x GROUP BY 1 $cj ORDER BY 2 DESC )";
 
        my $has_vols = 'AND cn.owning_lib = d.id';
        my $has_copies = 'AND cp.call_number = cn.id';