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

    ordinare sql in (valori)

    Ciao ragazzi

    ho una stringa sql che passo in questo modo

    select * from POST where ID in (87,67,54,97)

    poi faccio un loop con un movenext sul record e visualizzo correttamente i record, il problema è che con questo tipo di chiamata ho notato che il database mi ordina i record automaticamente dal più piccolo al più grande e mi restituisce in ordine

    record 54
    record 67
    record 87
    record 97

    io invece devo mantenere l'ordine della stringa (87,67,54,97)

    la domanda è come faccio ad ordinare i record mantenendo questo ordine?

    posso fare una roba del tipo "... ORDER BY ID in (87,67,54,97)"

    ???

    Grazie


  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Se non specifichi di quale rdbms stai parlando è difficile aiutarti.

    In mysql ad esempio potresti fare

    select * from POST where ID in (87,67,54,97) order by field(id,87,67,54,97)

  3. #3

    si era mysql

    Grazie scusami effettivamente mi ero dimenticato di specificare il database....

    ora provo subito con la stringa ch mi hai dato.

    Grazie

  4. #4

    se fosse su db access

    Ciao nicola non sono ancora riuscito a provare su db mysql perchè sono fuori sede però in locale potrei provare con access eventualemnte la stringa come dovrebbe essere perchè ho provato in diversi modi seguendo il tuo esempio ma non funziona ecco i tentativi falliti:

    ... order by field(id,87,67,54,97)
    ... order by id(87,67,54,97)
    ... order by field(87,67,54,97)


    grazie



  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    field() è una funzione proprietaria di mysql. Proprio per questo inizialmente ti chiedevo su quale database stessi lavorando.

    Ti posto un altro paio di alternative per mysql

    codice:
    select * from post
    where id in (87,67,54,97)
    order by id<>87,id<>67,id<>54,id<>97

    codice:
    select *,
    case
    when id = 87 then 1
    when id = 67 then 2
    when id = 54 then 3
    else 4
    end as ordine
    from post
    where id in (87,67,54,97)
    order by ordine
    In access la query diventerebbe
    codice:
    select * 
    from post
    where id in (87,67,54,97)
    order by id =87,id=67,id=54,id=97

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.