Pagina 1 di 5 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 43

Discussione: select top

  1. #1

    select top

    E' possibile selezionare con il comando TOP un numero specifico di record? L'intenzione è selezionare i record dal n° 50 al n° 100(ad esempio) e non i primi 50 (TOP 50) né tanto meno dover applicare una clausola WHERE che mi seleziona i record corrispondenti ad un valore come ad esempio il numero "ID": infatti in questo caso, cioè se usassi la formula "Select campo FROM tabella WHERE id BETWEEN 50 AND 100" ed essendo il n° ID un contatore, nel caso qualche record fosse stato cancellato, non saprei quanti record effettivamente siano stati selezionati....
    LIVE TO RIDE !!!
    www.motocustom.it

  2. #2
    Non so se esiste un sistema migliore, questo funziona


    Set RS= Server.CreateObject("ADODB.RecordSet")
    SQL= " SELECT * FROM tuatabella"
    RS.Open SQL, Conn, 1

    rs.move 50
    for x= 50 to 100
    response.write rs("nome")
    rs.movenext
    next
    rs.close
    set rs=nothing
    ciao

  3. #3
    un unico appunto

    "rs.move 50" muove il puntatore di 50 records, per cui se si vuole andare al 50mo record bisognera' fare "rs.move 49"

  4. #4
    grazie per la correzione, ho scritto troppo in fretta

  5. #5
    Select * FROM nome_tabella LIMIT 50,50

    (ad esempio LIMIT 3 ne estrae tre, oppure LIMIT 5,6 ne estrae sei partendo dal quinto).

  6. #6
    occhio: LIMIT va bene solo per MySQL

  7. #7
    giustissimo optime, ma credo che in sql server è comunque possibile simularla con una query simile:

    SELECT TOP 50 * FROM nome_tabella
    WHERE PKI NOT IN (SELECT TOP 50 PKI FROM nome_tabella ORDER BY PKI) ORDER BY PKI

    dove PKI corrisponde alla chiave primaria della tabella

    ps. non l'ho mai provata, ma credo che dovrebbe funzionare anche con db access

  8. #8
    e' una buona simulazione!

  9. #9
    Ho utilizzato la funzione suggerita in precedenza:

    <%
    quanti= request.form ("quanti")

    dim dove
    dove="driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("/database.mdb")
    Set rs=Server.CreateObject("ADODB.recordset")
    dim stmsql
    stmsql="Select campo FROM tabella"

    rs.Open stmsql,dove

    rs.move quanti
    fino= quanti + 49
    for x= quanti to fino

    response.write x
    response.write rs("campo")
    response.write ("
    ")

    rs.movenext
    next


    rs.close
    Set rs = NOTHING
    %>

    ...funziona perfettamente ma non bisognerebbe chiudere il database? Non riesco a capire come..... tutto il codice dovrebbe essere giusto....
    LIVE TO RIDE !!!
    www.motocustom.it

  10. #10
    ALT! Alla fine, esauriti i record mi da errore, non trovandone più:

    -------------------------------

    rs.Open stmsql,dove

    If not rs.EOF then

    rs.move quanti
    fino= quanti + 49
    for x= quanti to fino

    response.write x
    response.write rs("campo")
    response.write ("
    ")

    rs.movenext
    next

    end if

    rs.close
    Set rs = NOTHING


    -----------------------------

    va bene così?......
    LIVE TO RIDE !!!
    www.motocustom.it

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.