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

    [MySQL] È possibile ordinare manualmente una query ?

    Ciao a tutti,

    Dovrei fare una query del tipo "SELECT * FROM table WHERE id = 3 or id = 2 or id = 4 or id = 1"

    Bè se in questo caso ad esempio eseguo la query, i risultati mi escono ordinati in base all'id e non all'ordine in cui ho richiesto i record nella query. Il motivo del perchè accada è semplice, perchè segue la chiave primaria, ma c'è un modo, tramite query, per ottenere i record nell'ordine in cui li chiedo oppure devo per forza affidarmi ad una funzione esterna?

    Grazie
    SGr33n

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    con quella query non gli stai dicendo nulla riguardo l'ordinamento per cui usa cio che gli è ovvio usare, la chiave primaria.
    se il tuo scopo è avere prima i dati del id 3 poi quelli del 2 poi quelli del 4 ecc..
    non puoi far altro che usare 3 select in union
    cioè

    select * FROM table WHERE id = 3 or id = 2 order by id desc
    union select all * FROM table WHERE id = 4
    union
    select all * FROM table WHERE id = 1

  3. #3
    ah non conosco questa sintassi... grazie 1000... ma possono essere eseguite tutte allo stesso momento in una sola azione? quale è la sintassi precisa?
    SGr33n

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    1 solo sql , quello che ho scritto.

  5. #5
    Perfetto grazie 1000

    e c'è mica anche un modo per selezionare automaticamente gli stessi campi per tutte le query senza doverle dichiarare di volta in volta? Se non è possibile al massimo creo una variabile da richiamare di volta in volta.
    SGr33n

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    se non ti va bene * metti l'elenco dei campi , fai un pò tu. va bene anche una variabile che concateni ad uopo dove/qundo vuoi.

  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    select * from tabella where id in(1,2,3,4) order by field(id,3,4,2,1)

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    Originariamente inviato da nicola75ss
    select * from tabella where id in(1,2,3,4) order by field(id,3,4,2,1)
    order by field(id,3,4,2,1) non l'avevo ancora visto, ed i manuali non sono affatto chiari a proposito ma FUNZIONA! ogni giorno si impara sempre qualcosa...

  9. #9
    Effettivamente

    Grazie 1000 ad entrambi
    SGr33n

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