Visualizzazione dei risultati da 1 a 9 su 9

Discussione: ordinamento query

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591

    ordinamento query

    Salve, un consiglio su una query che devo fare.
    Dovrei far comparire solo gli ultimi 20 record ordinati per data di modifica, e fino a qui ci sono: ho fatto un campo che si aggiorna da solo quando si fa la modifica e funziona alla grande.
    MA.
    il cliente mi fa: "voglio gli stessi risultati ordinati nell'altro modo..". Traduco:
    vuole gli stessi 20 risultati ma ordinati dal più vecchio al più recente.
    ho pensato che fosse facile, ma se ordino semplicemente la query con ASC, vengono fuori i titoli di dicembre, cioè quando ha iniziato a inserire la roba..
    C'è modo in SQL di fare questo o devo fare con PHP: con php è facile, ma tocca fare 2 query. una con cui conto i record. un'altra con cui gli dico carica 20 record da x a y facendo una sottrazione..
    solo sapere se posso uscirne SOLO con una query

    ringrazio chiunque mi darà una mano

  2. #2
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,290
    Si può fare con una subquery

    Select *
    FROM(
    SELECT TOP 20 *
    FROM TABELLA
    Order by CAMPO) as pippo
    order by pippo.CAMPO DESC

    Su altri DB si utilizza limit alla fine e non top
    Se lo stai facendo da programma comunque io li riordinerei da programma.

  3. #3
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    perchè mi dice che è sbagliata?
    Select *
    FROM (SELECT TOP 20 * FROM note order by ultima_modifica ) as pippo
    order by ultima_modifica DESC

  4. #4
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Il modo "classico" è:

    SELECT Y.c1, Y.c2, Y.ecc FROM
    (
    SELECT TOP 20 X.c1, X.c2, X,ecc FROM T1 AS X ORDER BY X.c1 DESC
    ) AS Y
    ORDER BY Y.c1
    ;


    Poi puoi usare anche il Rank (oppure Row) che è una numerazione
    sequenziale che ti mette direttamente il DB


    PS: Scusami URANIO non avevo visto la tua risposta
    che poi è sostanzialmente identica alla mia

  5. #5
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    Quote Originariamente inviata da nman Visualizza il messaggio
    Il modo "classico" è:

    SELECT Y.c1, Y.c2, Y.ecc FROM
    (
    SELECT TOP 20 X.c1, X.c2, X,ecc FROM T1 AS X ORDER BY X.c1 DESC
    ) AS Y
    ORDER BY Y.c1
    ;


    Poi puoi usare anche il Rank (oppure Row) che è una numerazione
    sequenziale che ti mette direttamente il DB


    PS: Scusami URANIO non avevo visto la tua risposta
    che poi è sostanzialmente identica alla mia
    nemmeno io la avevo vista, ma mi dice che è sbagliata..

  6. #6
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,290
    Che errore ti da e su che DB stai eseguendo la query?

  7. #7
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    mysql.. hai ragione non lo avevo specificato..
    su phpmyadmin mi dice:
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM (SELECT TOP 20 * FROM note order by ultima_modifica ) as pippo order by ult' at line 1

  8. #8
    in mysql non esiste la TOP. devi usare LIMIT

  9. #9
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    ho fatto varie prove ma lasciavo la SUBQUERY senza specificare l'ordinamento.. invece è là che va IL DESC, mentre fuori ASC.. giustamente perchè deve prendere "in assoluto" le ultime 20 (subquery...) poi le riordina come ASC
    ECCOLA VAH!!!
    Codice PHP:
    SELECT *
    FROM (
    SELECT *
    FROM note
    ORDER BY ultima_modifica DESC
    LIMIT 0 
    20
    ) AS pippo
    ORDER BY ultima_modifica ASC 
    GRANDI E GRAZIE AD ENTRAMBI

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.