Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563

    SQL Server - Select first,second N record

    Che query devo fare per selezionare i primi, secondi, terzi 50 record??
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  2. #2
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    Ovviamente dovrai avere un criterio per ordinarli
    Immaginiamo sia un ID numerico...

    SELECT TOP 50 * FROM Tabella ORDER BY ID

    Per ottenere i secondi 50 potresti fare

    SELECT TOP 50 FROM Tabella WHERE ID NOT IN ( SELECT TOP 50 ID FROM Table ORDER BY ID ) ORDER BY ID

    per i terzi...

    SELECT TOP 50 FROM Tabella WHERE ID NOT IN ( SELECT TOP 100 ID FROM Table ORDER BY ID ) ORDER BY ID

    e così via...

  3. #3

  4. #4
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    Che soluzione...
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  5. #5
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Si potrebbe anche fare un cosa così

    codice:
    SET ROWCOUNT 50
    
    SELECT  *
    FROM  tabella
    WHERE campo_ordine >= valore_da_cui_partire
    
    SET  ROWCOUNT 0
    in cui <valore_da_cui_partire> lo decidi di volta in volta

    Si potrebbe anche creare una SP.


  6. #6
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    Originariamente inviato da optime
    guarda qui

    http://www.dicesare.com/programmazio...d-selezionati/
    Molto carino, non lo conoscevo

  7. #7
    Originariamente inviato da gibra
    Si potrebbe anche fare un cosa così

    codice:
    SET ROWCOUNT 50
    
    SELECT  *
    FROM  tabella
    WHERE campo_ordine >= valore_da_cui_partire
    
    SET  ROWCOUNT 0
    in cui <valore_da_cui_partire> lo decidi di volta in volta

    Si potrebbe anche creare una SP.

    il fatto è che <valore_da_cui_partire> non ha alcuna attinenza col numero di record...

  8. #8
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da optime
    il fatto è che <valore_da_cui_partire> non ha alcuna attinenza col numero di record...
    Ma potrebbe averlo.

    E' solo uno spunto che ho buttato lì, che potrebbe essere un punto di partenza e quindi andrebbe ulteriormente 'approfondito' in base allo scenario.

    Se ad esempio dovesse 'paginare' i record in una pagina web sarebbe utile una SP cui passando i parametri del primo e ultimo valore del campo, sfruttando (se esiste) un campo-ordinamento oppure creandone uno nuovo, oppure un tabella temporanea, etc...

    Comunque è inutile approfondire la questione se non si conosce lo scenario in primis:
    quanti record sono in gioco e dove risiede il database.


  9. #9
    e difatti l'articolo che ho postato sfrutta la ri-numerazione dei record per la paginazione

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 © 2025 vBulletin Solutions, Inc. All rights reserved.