Autor Zpráva
Radek Novák
Profil
Mám v databázi (MySQL) tísice záznamů, které bych chtěl řadit podle velikost.. Každý záznam má v řádku "size" zapsanou velikost souboru v Kb.

Pokud pomocí "SELECT size FROM .............. ORDER BY size desc"

Tak se mi záznamy seřadí nějak takto: 999Kb; 951Kb; 91Kb; 8950Kb; 850Kb;...

Řadí to záznamy podle prvního čísla a vůbec to nebere ohled na to, zda je číslo ve stovkách či tisících..

Neznáte prosím někdo postup jak docílit správného řazení?
bukaj
Profil
jediná možnost, která mě napadá je nejdříve si záznamy vložit do pole v PHP a potom je setřídit pomocí natsort().
Radek Novák
Profil
To by zase ale rapidně zatěžovalo datábázový server. Vždy by se musely projet všechny záznamy.. Když by teda člověk projel prvních 30 záznámů, stránkování po 10. Tak by místo 30 zpracovaných výsledku muselo být zpracováno 6000 výsledků. (Pže by se vždy musely zpracovat všechny záznamy..)
bukaj
Profil
Radek Novák
nebo by také šlo jednorázově to všechno upravit do podoby, aby to pak řadila databáze. takže:
999Kb => 00999Kb
951Kb => 00951Kb
... atd.

to by bylo asi nejjednodušší, pokud tedy neexistuje nějaký sql příkaz způsobující přirozené řazení jako natsort()
shamania
Profil
jestli jsem to správně pochopil, tak sloupec size je znakového typu.. takže navrhuju odstranit z hodnot jednotky "kb" a nechat tam jen čísla a převést sloupec třeba na typ "int". Pak už by při sql dotazu neměl být problém..
Toto téma je uzamčeno. Odpověď nelze zaslat.