Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    168

    ordinare per più campi pieni, come?

    ciao a tutti!
    avrei la necessità di ordinare i risultati di una sql in base a più campi pieni.
    mi spiego meglio.

    select * from pippo where [...] order by campo1, campo2, campo3

    il record 1 ha pieno solo il campo2
    il record 2 solo il campo 3
    il record 3 solo il campo 1

    il risultato dell'ordinamento dovrebbe essere:

    1°) record3
    2°) record1
    3°) record2

    conoscevo l'elemento IsNull (order by IsNull(campo1), IsNull(campo2), IsNull(campo3)) ma riguarderebbe l'eventualità che i campi siano vuoti... ho quindi provato con IsNotNull ma ottengo errore... dove sbaglio?

    vi ringrazio molto per l'aiuto, ciao ciao!

    t.

  2. #2
    Potresti provare, se il db è access, con
    codice:
    "... ORDER BY LEN(campo1), LEN(campo2)"

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    168
    dunque, purtroppo sto avendo un piccolo problema, non tanto riferito al suggerimento di mems (che ringrazio!) quanto più probabilmente ad un'errata applicazione dello stesso da parte mia.

    cerco di spiegare meglio la mia situazione.

    ho una tabella "prodotti" con i seguenti campi (riporto alcuni contenuti esemplificativi):

    ID | foto1 | foto2 | foto3
    -----------------------------------
    1 | (vuoto) | (vuoto) | (vuoto)
    2 | (vuoto) | (vuoto ) | pippo.jpg
    3 | pluto.jpg | (vuoto) | (vuoto)
    4 | (vuoto) | paperino.jpg | (vuoto)

    vorrei, come detto (forse male), ordinare questi risultati secondo la presenza o meno di una delle tre foto (nell'ordine di priorità 1,2,3) così da potere estrarre il primo record e visualizzare la foto corretta (sempre secondo l'ordine di importanza).

    La SQL che ho utilizzato io è la seguente:

    SELECT * FROM prodotti WHERE [condizioni varie] ORDER BY LEN(foto1), LEN(foto2), LEN(foto3), ID ASC

    La pagina non mi da errori, solo che anzichè vedere per primo il record n. 3 vedo il n. 2 che ha l'ultima foto in ordine di importanza... come mai?

    mi aiutate per favore a capire dove sto sbagliando?

    graziemille, ciao ciao!

    t.

  4. #4
    codice:
    "... LEN(foto1) ASC, LEN(foto2) ASC ..."
    Semmai prova con DESC al posto di ASC

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    168
    niente da fare.
    la cosa curiosa è che sembra ignorarmi del tutto i campi foto1 e foto2, infatti se faccio come mi dici tu (con DESC) mi visualizza il record con la prima foto3 disponibile (partendo dal record con ID più basso), ed il contrario (con ASC) ottenendo l'ultima foto3 disponibile (sempre partendo dal record con ID più basso)... boh... non saprei...

  6. #6
    prova con

    SELECT LEN(foto1), LEN(foto2), LEN(foto3),* FROM prodotti WHERE [condizioni varie] ORDER BY LEN(foto1), LEN(foto2), LEN(foto3), ID ASC


    e fatti stampare anche i primi 3 valori

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    168
    niente...
    l'ordinamento continua a tenere conto prima della foto3, poi della 2, quindi della 1, indipendentemente dall'ID ASC O DESC... davvero non capisco...

  8. #8
    mi dici cosa valgono i primi 3 valori dei vari record (i LEN(x))

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    168
    Dunque, non so come ma dovrei essere riuscita a risolvere il problema.
    I valori stampati, Mems, erano tutti uguali a 2, ovvero il numero di caratteri componenti l'ID (2 cifre). Spero di aver applicato correttamente la procedura della stampa record (con "i" mi dava errore, l'ho tolto ed è tutto ok), ad ogni modo ho risolto smanettando un po' a livello di ASC e DESC ed il problema pare risolto, tutto ok quindi!
    Grazie per l'aiuto!
    t.

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.