Navigazione

    Privacy - Termini e condizioni
    © 2020 Search On Media Group S.r.l.
    • Registrati
    • Accedi
    • CATEGORIES
    • Discussioni
    • Non letti
    • Recenti
    • Hashtags
    • Popolare
    • Utenti
    • Stream
    • Interest
    • Categories
    1. Home
    2. Categorie
    3. Coding e Sistemistica
    4. Coding
    5. Order by (SQL)
    Questa discussione è stata cancellata. Solo gli utenti con diritti di gestione possono vederla.
    • R
      raiken User Attivo • ultima modifica di

      Ti faccio vedere direttamente la pagina dove ho il problema

      http://www.skaweb.it/concorsi/1/classifica/

      come vedi a parità di punti dovrebbe mettermeli in ordine di tempo DESC invece sono tutti mischiati.

      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
      • I
        ienavr User Attivo • ultima modifica di

        a parità di punti il tempo non dovrebbe essere ASC? così sta sopra chi ci ha messo meno...o sbaglio?

        ad ogni modo sarebbe ottimo se postassi direttamente il codice PHP cui fai fare la query e poi il ciclo. Perchè ti assicuro che ho provato in locale ed andava..

        oppure attendiamo pareri + illuminanti 🙂

        0 Miglior Risposta Ringrazia Cita Rispondi

          1 Risposta Ultima Risposta
        • R
          raiken User Attivo • ultima modifica di

          Ho messo ASC invece che DESC (non mi ero accorto di questo errore) e per la prima posizione me li mette in ordine, nelle altre me li mette DESC..

          Ecco il codice, speriamo che sia di aiuto.

          
          <?php
          
          $query_partecipanti=mysql_query("select * from Concorso_Partecipante where ID_Concorso='$id_concorso' order by Risultato DESC, Tempo ASC");
          
          while($row_partecipanti=mysql_fetch_array($query_partecipanti)){
          
          $posizione=++$posizione;
          
          echo"<b>$posizione</b>: $row_partecipanti[Partecipante] con <b>$row_partecipanti[Risultato]</b> punti in <b>$row_partecipanti[Tempo]</b> secondi<br />";
          
          }
          
          ?>
          
          
          0 Miglior Risposta Ringrazia Cita Rispondi

            1 Risposta Ultima Risposta
          • R
            raiken User Attivo • ultima modifica di

            Ho messo ASC invece che DESC (non mi ero accorto di questo errore) e per la prima posizione me li mette in ordine, nelle altre me li mette DESC..

            Ecco il codice, speriamo che sia di aiuto.

            
            <?php
            
            $query_partecipanti=mysql_query("select * from Concorso_Partecipante where ID_Concorso='$id_concorso' order by Risultato DESC, Tempo ASC");
            
            while($row_partecipanti=mysql_fetch_array($query_partecipanti)){
            
            $posizione=++$posizione;
            
            echo"<b>$posizione</b>: $row_partecipanti[Partecipante] con <b>$row_partecipanti[Risultato]</b> punti in <b>$row_partecipanti[Tempo]</b> secondi<br />";
            
            }
            
            ?>
            
            
            0 Miglior Risposta Ringrazia Cita Rispondi

              1 Risposta Ultima Risposta
            • C
              cantoniere User • ultima modifica di

              Forse è un caso, ma i tempi sono ordinati in ordine ascii (come si fa con le stringhe).
              Nel database la colonna tempo è NUMBER o VARCHAR ?

              0 Miglior Risposta Ringrazia Cita Rispondi

                1 Risposta Ultima Risposta
              • R
                raiken User Attivo • ultima modifica di

                varchar(15)

                perchè cambia qualcosa nell'ordine in base al tipo di campo?

                0 Miglior Risposta Ringrazia Cita Rispondi

                  1 Risposta Ultima Risposta
                • C
                  cantoniere User • ultima modifica di

                  Sì.
                  Le stringhe vengono ordinate in ordine ascii (che coincide con l'alfabetico, i numeri vengono prima delle minuscole e poi delle maiuscole, mi pare), i numeri e le date vengono ordinati secondo l'ordine "intuitivo".
                  Comunque per risolvere il tuo problema dovresti convertire tempo in decimale.
                  Mi pare che si faccia: invece di select tempo, campo2...
                  select cast (tempo, decimal), campo 2

                  (non puoi usare l'asterisco ma elencare i campi)

                  0 Miglior Risposta Ringrazia Cita Rispondi

                    1 Risposta Ultima Risposta
                  • R
                    raiken User Attivo • ultima modifica di

                    Ho letto qua sull'uso di cast:

                    http://database.html.it/guide/lezione/2453/operatori-e-funzioni-i/

                    non capisco come poter mettere all'interno di uno stesso SELECT sia il CAST che il resto degli operatori che mi servono.

                    0 Miglior Risposta Ringrazia Cita Rispondi

                      1 Risposta Ultima Risposta
                    • C
                      cantoniere User • ultima modifica di

                      Prova a sostituire la riga che hai tu con questa:
                      $query_partecipanti=mysql_query("select * from Concorso_Partecipante where ID_Concorso='$id_concorso' order by Risultato DESC, CAST (Tempo as numeric) ASC");

                      0 Miglior Risposta Ringrazia Cita Rispondi

                        1 Risposta Ultima Risposta
                      • R
                        raiken User Attivo • ultima modifica di

                        nulla mi da un warning

                        Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /web/htdocs/www.skaweb.it/home/concorso_classifica.php on line 40

                        0 Miglior Risposta Ringrazia Cita Rispondi

                          1 Risposta Ultima Risposta
                        • I
                          ienavr User Attivo • ultima modifica di

                          e con questo codice ti funziona?

                          $query_partecipanti=mysql_query("select * from Concorso_Partecipante where ID_Concorso='$id_concorso' order by Risultato DESC, CAST (Tempo as SIGNED) ASC");

                          0 Miglior Risposta Ringrazia Cita Rispondi

                            1 Risposta Ultima Risposta
                          • R
                            raiken User Attivo • ultima modifica di

                            sempre lo stesso errore 🙂

                            pazienza lascerò così.

                            0 Miglior Risposta Ringrazia Cita Rispondi

                              1 Risposta Ultima Risposta
                            • I
                              ienavr User Attivo • ultima modifica di

                              hai provato anche a togliere lo spazio tra CAST e (Tempo?

                              scrivendo cioè

                              $query_partecipanti=mysql_query("select * from Concorso_Partecipante where ID_Concorso='$id_concorso' order by Risultato DESC, CAST(Tempo as SIGNED) ASC");

                              scusa ma sì va per tentativi e credo che la sintassi di prima fosse scorretta

                              0 Miglior Risposta Ringrazia Cita Rispondi

                                1 Risposta Ultima Risposta
                              • R
                                raiken User Attivo • ultima modifica di

                                stavolta funziona 🙂

                                grazie mille!

                                0 Miglior Risposta Ringrazia Cita Rispondi

                                  1 Risposta Ultima Risposta
                                • I
                                  ienavr User Attivo • ultima modifica di

                                  prego...

                                  alla fine ce l'abbiamo fatta!

                                  0 Miglior Risposta Ringrazia Cita Rispondi

                                    1 Risposta Ultima Risposta
                                  Caricamento altri post
                                  Rispondi
                                  • Topic risposta
                                  Effettua l'accesso per rispondere
                                  • Da Vecchi a Nuovi
                                  • Da Nuovi a Vecchi
                                  • Più Voti