|
Lines 141-182
sub GetNearbyItems {
Link Here
|
| 141 |
|
141 |
|
| 142 |
# Build the query for previous and next items |
142 |
# Build the query for previous and next items |
| 143 |
my $prev_query = ' |
143 |
my $prev_query = ' |
| 144 |
SELECT itemnumber, biblionumber, cn_sort, itemcallnumber |
144 |
SELECT items.itemnumber, items.biblionumber, items.cn_sort, items.itemcallnumber |
| 145 |
FROM items |
145 |
FROM items |
|
|
146 |
LEFT JOIN biblio |
| 147 |
ON ( items.biblionumber = biblio.biblionumber ) |
| 146 |
WHERE |
148 |
WHERE |
| 147 |
((cn_sort = ? AND itemnumber < ?) OR cn_sort < ?) '; |
149 |
((items.cn_sort = ? AND items.itemnumber < ?) OR items.cn_sort < ?) '; |
| 148 |
my $next_query = ' |
150 |
my $next_query = ' |
| 149 |
SELECT itemnumber, biblionumber, cn_sort, itemcallnumber |
151 |
SELECT items.itemnumber, items.biblionumber, items.cn_sort, items.itemcallnumber |
| 150 |
FROM items |
152 |
FROM items |
|
|
153 |
LEFT JOIN biblio |
| 154 |
ON ( items.biblionumber = biblio.biblionumber ) |
| 151 |
WHERE |
155 |
WHERE |
| 152 |
((cn_sort = ? AND itemnumber >= ?) OR cn_sort > ?) '; |
156 |
((items.cn_sort = ? AND items.itemnumber >= ?) OR items.cn_sort > ?) '; |
| 153 |
my @params; |
157 |
my @params; |
| 154 |
my $query_cond; |
158 |
my $query_cond; |
| 155 |
push @params, ( $start_cn_sort, $itemnumber, $start_cn_sort ); |
159 |
push @params, ( $start_cn_sort, $itemnumber, $start_cn_sort ); |
| 156 |
|
160 |
|
| 157 |
if ($start_homebranch) { |
161 |
if ($start_homebranch) { |
| 158 |
$query_cond .= 'AND homebranch = ? '; |
162 |
$query_cond .= 'AND items.homebranch = ? '; |
| 159 |
push @params, $start_homebranch->{code}; |
163 |
push @params, $start_homebranch->{code}; |
| 160 |
} |
164 |
} |
| 161 |
if ($start_location) { |
165 |
if ($start_location) { |
| 162 |
$query_cond .= 'AND location = ? '; |
166 |
$query_cond .= 'AND items.location = ? '; |
| 163 |
push @params, $start_location->{code}; |
167 |
push @params, $start_location->{code}; |
| 164 |
} |
168 |
} |
| 165 |
if ($start_ccode) { |
169 |
if ($start_ccode) { |
| 166 |
$query_cond .= 'AND ccode = ? '; |
170 |
$query_cond .= 'AND items.ccode = ? '; |
| 167 |
push @params, $start_ccode->{code}; |
171 |
push @params, $start_ccode->{code}; |
| 168 |
} |
172 |
} |
| 169 |
|
173 |
|
| 170 |
my @prev_items = @{ |
174 |
my @prev_items = @{ |
| 171 |
$dbh->selectall_arrayref( |
175 |
$dbh->selectall_arrayref( |
| 172 |
$prev_query . $query_cond . ' ORDER BY cn_sort DESC, itemnumber DESC LIMIT ?', |
176 |
$prev_query . $query_cond . ' ORDER BY items.cn_sort DESC, biblio.title DESC LIMIT ?', |
| 173 |
{ Slice => {} }, |
177 |
{ Slice => {} }, |
| 174 |
( @params, $gap ) |
178 |
( @params, $gap ) |
| 175 |
) |
179 |
) |
| 176 |
}; |
180 |
}; |
| 177 |
my @next_items = @{ |
181 |
my @next_items = @{ |
| 178 |
$dbh->selectall_arrayref( |
182 |
$dbh->selectall_arrayref( |
| 179 |
$next_query . $query_cond . ' ORDER BY cn_sort, itemnumber LIMIT ?', |
183 |
$next_query . $query_cond . ' ORDER BY items.cn_sort, itemnumber LIMIT ?', |
| 180 |
{ Slice => {} }, |
184 |
{ Slice => {} }, |
| 181 |
( @params, $gap + 1 ) |
185 |
( @params, $gap + 1 ) |
| 182 |
) |
186 |
) |
| 183 |
- |
|
|