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

    [MySQL] Query di rodinamento, determinare posizione record x

    Ciao a tutti,
    ho un problema forse banale, ho provato a usare il search nel forum ma non ho trovato nulla.

    Ho un database con diverse migliaia di record che possono essere filtrati e ordinati su diversi campi.

    Vorrei conoscere se è possibile, fatta una query, sapere in che posizione si trova il record con id=x (in altre parole quanti record lo precedono).

    Mettiamo di avere una query di questo tipo:
    SELECT id FROM tabella WHERE campo1=x AND campo2=y ORDER BY campo3 ASC, campo4 DESC, campo5 DESC;

    Vorrei sapere in che posizione si trova il record con id = x;

    Una soluzione semplice potrebbe essere quella di effettuare la query e poi scorrere in php i record sino a che non trovo quello che mi interessa: su un database così grosso e con un numero elevato di query di questo tipo per ogni pagina creerei un sistema lentissimo.

    Come si può fare?

    Grazie.

  2. #2
    se scegli solo ID, e come faresti a veder il posizione?
    ..:: GSFLASH ::..
    HTTP://WWW.GSFLASH.IT
    MCTS - ACP - OCP - ECDL
    Ubuntu 7.10/OpenSuse 10.3/Vista Premium/MacOSX Leopard
    My authentic japanese name is 薗田Sonoda (garden field) 大河 Taiga (big river)

  3. #3
    La posizione non è nel DB.. la posizione è proprio il dato che devo scovare..

    Cioè cambiando i criteri di ordinamento e filtraggio un record cambia posizione.. e volendo potrebbe anche sparire perchè filtrato.

    Faccio un esempio:

    tabella_1
    id | nome | età | figli
    1;pippo;50;2
    2;pluto;40;1
    3;paperino;45;0

    Ora..
    1. se ordino per nome ASC paperino è primo
    2. se ordino per età DESC paperino è secondo
    3. se ordino per figli DESC paperino è terzo

    Come vedi la posizione cambia a seconda dell'ordinamento.. come faccio a trovare questo valore?


  4. #4
    intendi la lista come questa?

    ID NOME ETA' FIGLI

    1 pippo 50 2

    2 pluto 45 1

    3 paperino 40 0



    e quando vuoi ordinare, cliccando su Età e la lista si cambia secondo l'età maggiore, oppure cliccando su "figli" aggiornando la lista secondo il minore di figli. Giusto?
    ..:: GSFLASH ::..
    HTTP://WWW.GSFLASH.IT
    MCTS - ACP - OCP - ECDL
    Ubuntu 7.10/OpenSuse 10.3/Vista Premium/MacOSX Leopard
    My authentic japanese name is 薗田Sonoda (garden field) 大河 Taiga (big river)

  5. #5

  6. #6
    Ottimo metodo teoricamente.. ma ottengo un errore di sintassi #1064.. si direbbe non digerisca "@num := @num + 1 AS riga_numero"..

    MySQL 4.1.7, è un problema di versione?

  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Hai provato a eseguire da interfaccia grafica le due query contemporaneamente mettendo il ; dopo il set?

    Da php invece devi eseguire le 2 query separatamente.

  8. #8
    Sì ho eseguito da phpMyAdmin separando le query con ";" e ho provato da script php facendo due query in sequenza.. in entrambi i casi ottengo quell'errore..


  9. #9

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.