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

    Una select che seleziona il prossimo record

    Nel manuale non c'è scritto niente e io non saprei come fare, ne tantomeno se esiste, una select che, dato il valore dell'ID del record, pesca l'ID successivo.

    Mi serve questa select perché ho degli ID non in ordine, posso avere l'id 4, 5 e non avere il 6 ma avere il 7, quindi una select con ID = ID+1 non la posso eseguire perché sarebbe sbagliata.

    Avete qualche illuminazione???
    FEDERIX.IT - [Pillola] GRAFICA DEI FORM

    ...ho ancora quella forza che ti serve, quando dici "Si comincia!"

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    sinceramente non ho ben capito cosa vuoi ottenere...

  3. #3
    In pratica io ho un:

    ID = 3

    dovrei trovare una select che mi restituisce il numero dell'ID successivo.
    FEDERIX.IT - [Pillola] GRAFICA DEI FORM

    ...ho ancora quella forza che ti serve, quando dici "Si comincia!"

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    select id from tabella
    where id > x
    limit 1;

    dove x è il tuo id attuale

  5. #5
    fai una semplice query:
    Codice PHP:
    $query "SELECT * FROM tabella WHERE ID = valore ORDER BY ID DESC LIMIT ".$ID.",2";
    //$ID e la variabile contenente l'id che passi 

  6. #6
    la query completa nel tuo caso sarebbe:
    Codice PHP:
    $query "SELECT * FROM tabella WHERE ID > 0 ORDER BY ID DESC LIMIT ".$ID.",2"
    //$ID e la variabile contenente l'id che passi

    /*con questa query selezioni 2 record: il record con l'id che ti interessa ($ID)
    e il successivo, poi con ORDER DESC (decrescente) punti direttamente
    al secondo e il gioco è fatto*/ 

  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Se fai una semplice prova su una tua tabella ti renderai conto che le query che hai postato non risolvono il suo problema.

    A parte quel where id > 0 che è superfluo tu ordini la tabella in ordine decrescente e poi con limit
    selezioni il record da cui partire (che non è la stessa cosa dell'identificativo) e quanti record recuperare ma così facendo non trovi ciò che serve a lui.

  8. #8
    Originariamente inviato da Federix
    In pratica io ho un:

    ID = 3

    dovrei trovare una select che mi restituisce il numero dell'ID successivo.
    mi dispiace contraddiriti (anche se sull'WHERE superfluo hai ragione), ma la query:
    Codice PHP:
    $query "SELECT * FROM tabella WHERE ID > 0 ORDER BY ID DESC LIMIT ".$ID.",2"
    fa esttamente ciò: controlla tutti i record dal primo all'ultimo e ne seleziona 2, il primo è quello di qui lui passa l'ID e il successivo è quello subito dopo (quello di cui vuole recuperare l'ID).
    Ecco il perchè dell' ORDER DESC: su due record sucessivi seleziona il secondo. Non avrebbe bisogno neanche di un ciclo, perchè si troverebbe il risultato corretto nella prima row di risultato.
    Ti ricordo che ad esmpio LIMIT 9,10 visualizza i record da 10 a 19

  9. #9
    Ops..scusa, rileggendo ho capito cosa si intendeva...effettivamente la soluzione l'avevi già data tu:
    select id from tabella
    where id > x
    limit 1;

    con la mia invecce troverebbe solo il 4 e il 5 record (se l'ID fosse 3), che potrebbero corrispondere anche all'ID (125 e 128), cioè i primi 4° e 5° successivi.

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da nickang
    Ops..scusa, rileggendo ho capito cosa si intendeva...effettivamente la soluzione l'avevi già data tu:
    select id from tabella
    where id > x
    limit 1;

    con la mia invecce troverebbe solo il 4 e il 5 record (se l'ID fosse 3), che potrebbero corrispondere anche all'ID (125 e 128), cioè i primi 4° e 5° successivi.
    Di niente figurati.

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.