my $query = "
SELECT *
- FROM items, biblio, authorised_values
+ FROM items
+ LEFT JOIN biblio ON (items.biblionumber = biblio.biblionumber)
+ LEFT JOIN biblioitems ON (items.biblionumber = biblioitems.biblionumber)
+ LEFT JOIN authorised_values ON (items.itemlost = authorised_values.authorised_value)
WHERE
- items.biblionumber = biblio.biblionumber
- AND items.itemlost = authorised_values.authorised_value
- AND authorised_values.category = 'LOST'
+ authorised_values.category = 'LOST'
AND itemlost IS NOT NULL
AND itemlost <> 0
-
";
my @query_parameters;
foreach my $key (keys %$where) {
$query .= " AND $key LIKE ?";
push @query_parameters, "%$where->{$key}%";
}
- if ( defined $orderby ) {
- $query .= ' ORDER BY ?';
- push @query_parameters, $orderby;
+ my @ordervalues = qw/title author homebranch itype barcode price replacementprice lib datelastseen location/;
+
+ if ( defined $orderby && grep($orderby, @ordervalues)) {
+ $query .= ' ORDER BY '.$orderby;
}
my $sth = $dbh->prepare($query);
push @where_strings, 'issues.date_due IS NULL';
}
+ if ( $ignoreissued) {
+ $query .= "LEFT JOIN issues ON items.itemnumber = issues.itemnumber ";
+ push @where_strings, 'issues.date_due IS NULL';
+ }
+
if ( @where_strings ) {
$query .= 'WHERE ';
$query .= join ' AND ', @where_strings;
authorised values for a biblio.
parameters: listref of authorised values, such as comes from
- get_item_ahtorised_values or
+ get_item_authorised_values or
from C4::Biblio::get_biblio_authorised_values
returns: listref of hashrefs for each image. Each hashref looks like