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