View | Details | Raw Unified | Return to bug 35484
Collapse All | Expand All

(-)a/C4/ShelfBrowser.pm (-10 / +13 lines)
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
- 

Return to bug 35484