Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [SQL SERVER] Consiglio su record precedente e successivo

    Ciao a tutti volevo un consiglio da voi su come implementare una query.
    Vi spiego...
    Ho creato una pagina dove c'è un elenco di risultati letti da un database sql server secondo una query dinamica cioè una query che non è sempre la stessa.
    Cliccando su ogni singolo risultato di ricerca si va alla sua pagina di dettaglio.
    In pratica il classico elenco di risultati, se clicco su un risultato vado al suo dettaglio.
    All'interno del dettaglio di un risultato ho dovuto inserire due link per spostarsi al risultato "successivo" e al risultato "precedente".
    Sarebbe tutto molto semplice se la query di elenco fosse sempre la stessa ma purtroppo come vi dicevo la query varia, quindi ad uno stesso dettaglio il "successivo" potrebbe essere un record come un altro questo in base alla query di elenco della pagina di elenco.
    Non riesco a trovare il modo di poter implementare questa cosa...

    Pensavo di salvare in una variabile di sessione la query generata volta per volta dalla pagina di elenco e poi passare questa variabile alla pagina di dettaglio e fare una query tramite questa variabile di sessione che però porti il mio indice all'id del dettaglio e poi una volta posizionato in questo punto mi sposterei avanti o indietro di uno ottenendo così il precedente e il successivo.

    Solo che non riesco a scrivere questa query sql...

    Per cercare di farvi capire vi faccio un esempio.... mettiamo che ho questa query:

    codice:
    SELECT id, titolo FROM tabella WHERE condizione1 = 'aaa' AND condizione2 = 'bbb' ORDER BY data desc
    Questa query mi tira fuori questi risultati:
    id = 1 - titolo = prova1
    id = 10 - titolo = prova2
    id = 6 - titolo = prova3
    id = 8 - titolo = prova4
    id = 4 - titolo = prova5
    id = 3 - titolo = prova6
    id = 9 - titolo = prova7

    se io clicco sul record con id=8 e accedo al suo dettaglio, il mio "successivo" sarà quello con id=4 e il mio "precedente" sarà quello con id=6 quindi nella pagina di dettaglio volevo fare la stessa SELECT solo che partisse a leggere i dati dall'id=8 in avanti...

    Ho cercato di essere più chiaro possibile spero di esserci riuscito.....

    Grazie a chi mi vorrà aiutare

  2. #2
    il precedente sarà

    SELECT TOP 1 id, titolo
    FROM tabella
    WHERE condizione1
    ='aaa' AND condizione2 ='bbb'
    AND ID<ID_CORRENTE
    ORDER BY data desc

  3. #3
    Optime grazie per l'aiuto il problema è che però quella query mi tira fuori sempre il record precedente rispetto all'id che gli passo non all'ordine della lista della pagina elenco.
    Cioè se l'ordine della lista della pagina precedente secondo la query è:
    id=1406 titolo=aaa
    id=1389 titolo=bbb
    id=1408 titolo=ccc

    e io clicco sul dettaglio dell'id=1389 la query come precedente mi dà risultato vuoto mentre come successivo mi dà l'id=1406....

    mentre io vorrei che il precedente fosse il 1406 e il successivo 1408 almeno nel caso attuale....

    non so se mi sono spiegato.....

  4. #4
    allora fa' così:
    - nella pagina dove formi l'elenco, preparati anche un array (o una lista separata da ";", come ti trovi più comodo) con tutti gli id estratti
    - memorizzala in session, o trova un modo di passarlo alla pagina della singola info
    - nella pagina della singola info, in base all'id passato ricavati ID precedente e successivo, e associali ai tasti avanti e indietro


Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.