- @$filters[0]=~ s/\*/%/g if (@$filters[0]);
- $strcalc .= " AND borrowers.categorycode like '" . @$filters[0] ."'" if ( @$filters[0] );
- if (@$filters[1]){
- my $strqueryfilter="SELECT DISTINCT borrowernumber FROM issues where issues.timestamp> @$filters[1] ";
- my $queryfilter = $dbh->prepare("SELECT DISTINCT borrowernumber FROM issues where issues.timestamp> ".format_date_in_iso(@$filters[1]));
- $strcalc .= " AND borrowers.borrowernumber not in ($strqueryfilter)";
-
-# $queryfilter->execute(@$filters[1]);
-# while (my ($borrowernumber)=$queryfilter->fetchrow){
-# $strcalc .= " AND borrowers.borrowernumber <> $borrowernumber ";
-# }
- } else {
- my $strqueryfilter="SELECT DISTINCT borrowernumber FROM issues ";
- my $queryfilter = $dbh->prepare("SELECT DISTINCT borrowernumber FROM issues ");
- $queryfilter->execute;
- $strcalc .= " AND borrowers.borrowernumber not in ($strqueryfilter)";
-# while (my ($borrowernumber)=$queryfilter->fetchrow){
-# $strcalc .= " AND borrowers.borrowernumber <> $borrowernumber ";
-# }
+ my @query_args;
+ if ( @$filters[0] ) {
+ @$filters[0]=~ s/\*/%/g;
+ $strcalc .= " AND borrowers.categorycode like ?";
+ push @query_args, @$filters[0];
+ }
+ $strcalc .= " AND NOT EXISTS (SELECT * FROM issues WHERE issues.borrowernumber=borrowers.borrowernumber ";
+ if ( @$filters[1] ) {
+ $strcalc .= " AND issues.timestamp > ?";
+ push @query_args, @$filters[1];
+ }
+ $strcalc .= ") ";
+ $strcalc .= " AND NOT EXISTS (SELECT * FROM old_issues WHERE old_issues.borrowernumber=borrowers.borrowernumber ";
+ if ( @$filters[1] ) {
+ $strcalc .= " AND old_issues.timestamp > ?";
+ push @query_args, @$filters[1];