Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di Bugu
    Registrato dal
    Nov 2007
    Messaggi
    871

    [access] query con ordine crescente

    Ho creato una semplice query di selezione con uno dei campi ordinato in alfabetico (ordine crescente).
    Vorrei dire alla query di mantenermi sempre l'ordine alfabetico, tranne per i record che iniziano col carattere "P", che devono sempre andare alla fine.
    Quindi: tutto in alfabetico ma i record che iniziano con P devono essere spostati in fondo.
    Come posso fare?
    Thanks
    Linux User
    ---------
    Solo due cose sono infinite: l'universo e la stupidità umana, e non sono tanto sicuro della prima.

  2. #2
    Utente di HTML.it L'avatar di nelsonblu
    Registrato dal
    Feb 2007
    Messaggi
    2,234
    aggiungi un nuovo campo alla query con questa
    Codice PHP:
    ordinaIIf(InStr(1;[nomi];"p")=1;"ZZZ";[nomi]) 
    e ordini rispetto a tale campo

  3. #3
    Utente di HTML.it L'avatar di Bugu
    Registrato dal
    Nov 2007
    Messaggi
    871
    Funziona.
    Grazie!
    Linux User
    ---------
    Solo due cose sono infinite: l'universo e la stupidità umana, e non sono tanto sicuro della prima.

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    In casi del genere uso grosso modo la tecnica di nelsonblu con la differenza che metto due valori numerici. La sostanza comunque è quella.

    codice:
    select *
    from tabella
    order by iif(left(nome_campo,1)="p",2,1),nome_campo

  5. #5
    Utente di HTML.it L'avatar di Bugu
    Registrato dal
    Nov 2007
    Messaggi
    871
    Originariamente inviato da nicola75ss
    In casi del genere uso grosso modo la tecnica di nelsonblu con la differenza che metto due valori numerici. La sostanza comunque è quella.

    codice:
    select *
    from tabella
    order by iif(left(nome_campo,1)="p",2,1),nome_campo
    Cosa cambia tra questa soluzione e quella di nelsonblu?
    Linux User
    ---------
    Solo due cose sono infinite: l'universo e la stupidità umana, e non sono tanto sicuro della prima.

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    In pratica la query di nelsonblu sarebbe

    codice:
    select *
    from tabella
    order by iif(left(nome_campo,1)="p","zzz",nome_campo);
    Prova a mettere un campo con valore zzzz e vedrai da te cosa succede.
    Usando un ordinamento numerico il problema non si pone.

    Certo, il mio è un esempio estremo ma le leggi di Murphy insegnano.

  7. #7
    Utente di HTML.it L'avatar di nelsonblu
    Registrato dal
    Feb 2007
    Messaggi
    2,234
    In effetti non è un caso il mio "zzz" e poi il valore del campo.
    In origine come nicola con i numeri 2,1 avevo messo "Z","A". Logica identica.
    Ma non funzionava bene sull'ordinamento dei campi rimanenti, quelli che non iniziavano con P.
    E in effetti anche quello di Nicola sul mio esempio è fallace.
    A meno che non sbagli qualcosa.



    Blezio non dovrebbe stare lì. Perciò ho preferito "ZZZ" e il campo, questo problema non si poneva.

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Ciao nelson. Se scrivi

    codice:
    select *
    from tabella
    order by iif(left(comune,1)="p",2,1),comune
    non ottieni l'ordinamento atteso?

  9. #9
    Utente di HTML.it L'avatar di Bugu
    Registrato dal
    Nov 2007
    Messaggi
    871
    Originariamente inviato da nelsonblu
    In effetti non è un caso il mio "zzz" e poi il valore del campo.
    In origine come nicola con i numeri 2,1 avevo messo "Z","A". Logica identica.
    Ma non funzionava bene sull'ordinamento dei campi rimanenti, quelli che non iniziavano con P.
    E in effetti anche quello di Nicola sul mio esempio è fallace.
    A meno che non sbagli qualcosa.



    Blezio non dovrebbe stare lì. Perciò ho preferito "ZZZ" e il campo, questo problema non si poneva.
    Per ulteriore sicurezza posso mettere anche "ZZZZZZZZ" come valore, o le tre Z sono un parametro fisso?

    Io poi usando il codice di nicola non ho l'errore di Blezio, perchè?
    Linux User
    ---------
    Solo due cose sono infinite: l'universo e la stupidità umana, e non sono tanto sicuro della prima.

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da Bugu
    Per ulteriore sicurezza posso mettere anche "ZZZZZZZZ" come valore, o le tre Z sono un parametro fisso?

    Io poi usando il codice di nicola non ho l'errore di Blezio, perchè?
    Io eviterei le z e userei il metodo che ti ho suggerito. Lo utilizzo sempre in mysql (anche se con una sintassi leggermente diversa) e non ho mai avuto alcun problema.

    edit. Così a naso direi che il problema di nelson sia dovuto al fatto che ordina solo su 1 e 2 e non anche su comune. Se vengono specificati entrambi i parametri di ordinamento, quello numerico e quello letterale vengono messi prima tutti i valori pari a 1 (cioè quelli la cui iniziale è diversa da "p") e su di essi viene effettuato l'ordinamento alfabetico. Idem dicasi per quelli che iniziano con la "p" e che quindi hanno valore pari a 2.

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.