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. [mysql] ordinare in base alla completezza del record
    Questa discussione è stata cancellata. Solo gli utenti con diritti di gestione possono vederla.
    • D
      dariomarco User Attivo • ultima modifica di

      [mysql] ordinare in base alla completezza del record

      Salve a tutti,
      ho un db mysql e vorrei fare una query sql, che mi ordina i records in base alla loro completezza.
      Es. se un record ha tutti i campi completi va messo prima di un record che ne ha metà, e poi per ultimi i records con uno o zero campi completi.

      come dovrei fare?
      grazie, ciao.

      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
      • M
        mirkoagrati User Attivo • ultima modifica di

        Ciao DarioMarco,
        penso che ti basti usare l'operatore ORDER BY:
        [php]
        select * from tab1
        order by field1, field2, filed3
        [/php]Ciao

        0 Miglior Risposta Ringrazia Cita Rispondi

          1 Risposta Ultima Risposta
        • D
          dariomarco User Attivo • ultima modifica di

          Grazie Mirko, ma purtroppo, i records hanno tanti campi, e vorrei dare un valore in base alla completezza del campo.
          Sentivo in rete che si possono utilizzare i condizionali nelle query sql, ma non so come usarli, magari se qualcuno potrebbe postarmi qualche tutorial.

          ciao.

          0 Miglior Risposta Ringrazia Cita Rispondi

            1 Risposta Ultima Risposta
          • M
            mirkoagrati User Attivo • ultima modifica di

            Ciao DarioMarco,
            mi sembra che le strutture condizionali a cui ti riferisci non siano SQL standard.

            Ogni DB ha il suo linguaggio proprietario.

            Penso dovresti fare riferimento ai documenti ufficiali della piattaforma che utilizzi.

            Ciao

            0 Miglior Risposta Ringrazia Cita Rispondi

              1 Risposta Ultima Risposta
            • T
              thedarkita ModSenior • ultima modifica di

              Ciao DarioMarco,

              Fai un if nella query ed incrementi un campo virtuale se il campo non è vuoto, e poi ordini in base a quel numero. Ovviamente se i campi sono tanti ti toccherà fare tanti if.

              0 Miglior Risposta Ringrazia Cita Rispondi

                1 Risposta Ultima Risposta
              • D
                dariomarco User Attivo • ultima modifica di

                Ok, grazie, va già meglio, non è un problema fare tante if 😄
                vorrei chiederti per cortesia se potresti farmi un piccolo esempio, anche con uno/due campi

                grazie, ciao.

                0 Miglior Risposta Ringrazia Cita Rispondi

                  1 Risposta Ultima Risposta
                • T
                  thedarkita ModSenior • ultima modifica di

                  Eccoti un esempio con 2 campi:
                  [php]
                  SELECT *,if(campo1 != '', 1, 0) AS c1,if(campo2 != '', 1, 0) AS c2 FROM tabella ORDER BY (c1+c2) DESC
                  [/php]
                  Dovrebbe funzionare.

                  0 Miglior Risposta Ringrazia Cita Rispondi

                    1 Risposta Ultima Risposta
                  • D
                    dariomarco User Attivo • ultima modifica di

                    OH! finalmente qualcosa di concreto!!! Grazie!!!
                    solo che non ho capito una cosa:

                    campo1 != '', 1, 0

                    campo1 - nome del campo
                    1 - assegna un valore
                    0 - ???

                    Grazie, ciao.

                    0 Miglior Risposta Ringrazia Cita Rispondi

                      1 Risposta Ultima Risposta
                    • T
                      thedarkita ModSenior • ultima modifica di

                      La sintassi dell if è:
                      [php]
                      if(condizione, vero, falso)
                      [/php]
                      Allora come ti dicevo prima è per fare un campo virtuale, il campo sarebbe importanza del record.
                      Noi controlliamo se il campo1 non è uguale a niente incrementiamo l'importanza di 1, e quindi nell'ordinamento verrà preso prima degli altri con:
                      [php]
                      ORDER BY (c1+c2) DESC
                      [/php]
                      Spero di essere stato chiaro, è più facile a farsi che a dirsi. 😄

                      0 Miglior Risposta Ringrazia Cita Rispondi

                        1 Risposta Ultima Risposta
                      • D
                        dariomarco User Attivo • ultima modifica di

                        Pui dirlo forte!!!
                        Sei stato chiarissimo grazie!!!

                        Ciao.

                        0 Miglior Risposta Ringrazia Cita Rispondi

                          1 Risposta Ultima Risposta
                        • T
                          thedarkita ModSenior • ultima modifica di

                          Figurati.
                          Se hai problemi chiedi pure.

                          0 Miglior Risposta Ringrazia Cita Rispondi

                            1 Risposta Ultima Risposta
                          • D
                            dariomarco User Attivo • ultima modifica di

                            Beh, già che ci sono ne approfitto 😄
                            volevo chiederti: ma se allungo un pò la query, non allungo anche il tempo di esecuzione dell script?

                            0 Miglior Risposta Ringrazia Cita Rispondi

                              1 Risposta Ultima Risposta
                            • T
                              thedarkita ModSenior • ultima modifica di

                              Dipende da come viene "allungata", ovviamente una soluzione del genere dovrebbe impiegare anche più tempo di un altro tipo di ordinamento.
                              Poi bisogna vedere quanti record ci sono nella tabella.

                              0 Miglior Risposta Ringrazia Cita Rispondi

                                1 Risposta Ultima Risposta
                              • D
                                dariomarco User Attivo • ultima modifica di

                                I records sono tanti, ed anche gli if da fare... ma ho provato a testare il tempo di esecuzione su phpmyadmin e comunque si tratta di millesimi di secondi...
                                Questa è un'ottimo pregio di mysql, ma ho visto la documentazione, ed è molto interessante, non si ferma al semplice sql, ma va anche alla creazione di funzioni vere e proprie nonchè ad usare le regExp.
                                Mi chiedevo se esisteva una documentazione anche non ufficiale in italiano.

                                Grazie, ciao.

                                0 Miglior Risposta Ringrazia Cita Rispondi

                                  1 Risposta Ultima Risposta
                                • T
                                  thedarkita ModSenior • ultima modifica di

                                  In italiano c'è poco e niente, purtroppo credo dovrai fare affidamento a testi in inglese.

                                  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