- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- [mysql] ordinare in base alla completezza del record
-
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.
-
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 campigrazie, ciao.
-
Eccoti un esempio con 2 campi:
[php]
SELECT *,if(campo1 != '', 1, 0) AS c1,if(campo2 != '', 1, 0) AS c2 FROMtabella
ORDER BY (c1+c2) DESC
[/php]
Dovrebbe funzionare.
-
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.
-
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.
-
Pui dirlo forte!!!
Sei stato chiarissimo grazie!!!Ciao.
-
Figurati.
Se hai problemi chiedi pure.
-
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?
-
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.
-
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.
-
In italiano c'è poco e niente, purtroppo credo dovrai fare affidamento a testi in inglese.