Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Query condizionale

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074

    Query condizionale

    Ho una tabella con - tra gli altri - tre campi:
    • campo data
    • campo ordine
    • campo flag

    ​mi serve poter fare una query che mi ordini i risultati secondo questo criterio:
    secondo il valore di ordine, se flag è = no, altrimenti secondo la data se flag = si.
    Esempio:
    Ordine=1, data=10-10-2014, flag=no, nome=Pippo
    Ordine=2, data=17-10-2014, flag=si, nome=Mario
    Ordine=3, data=15-10-2014, flag=no, nome=Giulio
    Ordine=4, data=07-10-2014, flag=si, nome=Sara
    Ordine=5, data=02-10-2014, flag=no, nome=Luca
    Dovrebbe restituirmi:
    Pippo
    Giulio
    Luca
    Sara
    Mario
    Cioè prima quelli con flag=no, secondo il valore di ordine, e poi quelli con flag=si, secondo la data.
    Come devo impostare la query?

    thanx in advance
    metatad
    graphic & web design

  2. #2
    Prova questa (non l'ho provata)
    codice:
    SELECT *
    FROM (
             SELECT * FROM tabella
             WHERE flag='no'
             ORDER BY ordine
              UNION
             SELECT * FROM tabella
             WHERE flag='si'
             ORDER BY data
             ) AS tabella_ordinata
    ORDER BY flag

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    mmmm... tre questioni:
    - dove apri la parentesi tonda che chiudi prima di AS?
    - devo usare proprio "tabella_ordinata", in italiano?
    - chiudi con ORDER BY flag, ma flag contiene solo valore si o no...
    metatad
    graphic & web design

  4. #4
    L'hai provata? Funziona?

    - La parentesi è aperta dopo FROM, crea una tabella già ordinata secondo le specifiche sulla quale poi ordino per flag
    - è solo un nome, se non ti piace cambialo
    - 'no' viene prima di 'si' alfabeticamente, quindi avrai prima i 'no' e poi i 'si'

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    Scusa, non avevo notato la parentesi di apertura...
    Cmq non va, non restituisce alcun risultato :-(
    metatad
    graphic & web design

  6. #6
    Nella query interna prova a scrivere i nomi dei campi anziché * , se non funziona neanche così dovrai aspettare che qualcuno più esperto di me risponda

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    Ok, grazie!
    metatad
    graphic & web design

  8. #8
    Quote Originariamente inviata da metatad Visualizza il messaggio
    Ok, grazie!
    Ma funge o no?

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    No... ma alla fine faccio due query e ciccia!
    Prima quelle con flag=no per ordine, poi quelle con flag=si per data...
    metatad
    graphic & web design

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    539
    .
    Ultima modifica di marino51; 11-10-2014 a 23:51

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.