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

    In ordine alfabetico basandosi su due campi

    Ho una tabella che contiene dati di persona. Per il problema inq uestione consideriamone tre: nome cognome e pseudonimo. Lo pseudonimo ha priorità sugli altri due e, se il suo valore non è nullo, sarà prediletto nelle visualizzazioni di tuto il sito.
    Dovendo creare una lista in ordine alfabetico delle persone contenute nella tabella non so come settare l'ORDER BY poichè se metto per nome tutte quelle che hanno anche uno pseudonimo vengono visualizzate in ordine di nome ma solo con lo pseudonimo visualizzato e quindi la lista non è più in ordine alfabetico.

    Credo che dovrei in qualche modo prima estrarre i dati e POI fare l'ordinamento alfabetico.
    Potete aiutarmi in qualche modo? Idee?

    Praticamente ottengo questo:

    -Albert Einstein
    -Gianni Rodari
    -Cicciopasticcio (nome reale Lorenzo Rossi)

    Invece di questo:

    -Albert Einstein
    -Cicciopasticcio (nome reale Lorenzo Rossi)
    -Gianni Rodari
    All'uomo non verrà mai tanto male quanto dall'uomo.

  2. #2
    prova ad usare una if
    codice:
    select *,
    if(campo_nick = '', nome, campo_nick) as ordine
    from tabella
    order by ordine

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Ah non sapevo si potessero fare le condizioni anche all'interno di una query... ma qual'è la guista sintassi? non va quello che hai postato.
    All'uomo non verrà mai tanto male quanto dall'uomo.

  4. #4
    Originariamente inviato da Tremisfero
    Ah non sapevo si potessero fare le condizioni anche all'interno di una query... ma qual'è la guista sintassi? non va quello che hai postato.
    ovviamente devi usare i tuoi nomi di campo e tabella ... la sintassi e' corretta. Metti la segnalazione di errore e sopratutto dovresti dire *cosa* non va.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Hai ragione ora ti scrivo l'errore.
    Ovviamente i campi li avevo rinominati.. se non l'avessi fatto otevi pure smettere di considerarmi.. hihih.

    questa è la query:

    codice:
    SELECT * ,
    if (pseudonimo = '', nome, pseudonimo) as ordine
    FROM '.$tabella_artisti.' ORDER BY ordine

    e l'errore è:

    Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in content.php on line 175

    dove la linea 175 è:

    codice:
    as ordine FROM '.$tabella_artisti.' ORDER BY ordine';
    All'uomo non verrà mai tanto male quanto dall'uomo.

  6. #6
    e se scrivi:
    codice:
    $var = "SELECT *,
           if (pseudonimo = '', nome, pseudonimo) as ordine
           FROM $tabella_artisti 
           ORDER BY ordine";
    $res = mysql_query($var);
    anche se sarebbe meglio vedere il codice php.

    meglio che le query le raggruppi (ai due estremi) con doppi apici... ti semplifichi la vita ed eviti errori.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Utente di HTML.it L'avatar di mariox
    Registrato dal
    Nov 2006
    Messaggi
    837
    SELECT * ,
    if (pseudonimo = ' ', nome, pseudonimo) as ordine
    FROM '$tabella_artisti' ORDER BY ordine;

  8. #8
    Avete ragione, il probmea era nel nome tabella passato con la variabile inserita in quel modo. Strano, prima di applicare l'if quel metodo del ".$tabella." funzionava e non dava errore.

    Grazie cmq ora funziona... siete stati gentilissimi
    All'uomo non verrà mai tanto male quanto dall'uomo.

  9. #9
    Originariamente inviato da Tremisfero
    Avete ragione, il probmea era nel nome tabella passato con la variabile inserita in quel modo. Strano, prima di applicare l'if quel metodo del ".$tabella." funzionava e non dava errore.

    Grazie cmq ora funziona... siete stati gentilissimi
    per essere precisi... il problema in cui ti sei imbattuto erano gli apici....

    probabilmente (senza probabilmente) aprivi la query SQL con apice singola. Io ti ho aggiunto un campo = '' (due apici singole) e queste due apici provocavano esattamente l'errore che hai citato. Per questo ti ho riscritto tutta la query, per evitare confusioni ulteriori.

    Meglio adottare la tecnica di mettere le doppie apici a circoscrivere la direttiva sql ed usare le apici singole per circoscrivere i valori stringa definiti al suo interno. Da notare che la query suggerita da mariox e' errata perche' il nome della tabella non e' una stringa e quindi non va messo tra apici. Al limite tra apostrofi alt+96 `nome_tabella`

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Grandioso.
    Avrei fatto meglio a postare tutti i tag piuttosto che solo la query.
    Grazie infinite.
    All'uomo non verrà mai tanto male quanto dall'uomo.

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.