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 |
- |
|
|