Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Сортиране на записи според номер

Featured Replies

Здравейте колеги,

Имам едно питане - как мога да сортирам записи, според техния номер. Уловката е, че самите номера започват например 01, 02, 03, 1, 2, 3 ... n

Тъй като има нула се наложи да направя колоната varchar, което тотално оплеска подреждането, защото ги сортира цифра по цифра, а не като цяло число.

За момента стигнах до следното решение, което обаче не ме устройва.

mysqli_query($conn,'SELECT number FROM table ORDER BY CAST(`number` AS decimal) ASC');

Така написана заявката ги сортира правилно, но премахма нулата, което за мен е проблем, защото искам да бъде визуализирана също. Някой има ли идея как може да стане номера? :)

SELECT number FROM table ORDER BY CAST(`number` AS SIGNED) ASC'

Това е повече въпрос към база данни. Ако покажете структурата на таблицата и няколко записа ще е доста по-лесно се намери правилното решение.

Тези цифри сега като INT ли са записани?

преди 26 минути, streleca_stz написа:

Здравейте колеги,

Имам едно питане - как мога да сортирам записи, според техния номер. Уловката е, че самите номера започват например 01, 02, 03, 1, 2, 3 ... n

Тъй като има нула се наложи да направя колоната varchar, което тотално оплеска подреждането, защото ги сортира цифра по цифра, а не като цяло число.

За момента стигнах до следното решение, което обаче не ме устройва.


mysqli_query($conn,'SELECT number FROM table ORDER BY CAST(`number` AS decimal) ASC');

Така написана заявката ги сортира правилно, но премахма нулата, което за мен е проблем, защото искам да бъде визуализирана също. Някой има ли идея как може да стане номера? :)

 

Ако са цели числа, би ли обяснил каква е разликата между 01 и 1 ?

  • Автор

Ами аз така го разбирам:

Под цели числа имах предвид, че искам да сортира числата в низходящ ред, без значение колко цифри съдържа даденото число. Когато смених типа на реда от integer на varchar започна да подрежда числата по първата цифра.. Иначе казано ако имам числата например 01, 1, 2, 11, 20 няма да ми ги сортира в този вид, а ще ги подреди 01, 1, 11, 2, 20 (иначе казано ги взима цифра по цифра, а не като цяло число), което мен не ме устройва.

Между другото мисля, че намерих отговор на проблема си като направих следната корекция на зявката:

mysqli_query($conn,'SELECT number FROM table ORDER BY CAST(`number` AS decimal) ASC, number ASC');

Предполагам, че това изобщо не е най-добрият метод за сортиране, но в моя случай помогна.

преди 28 минути, streleca_stz написа:

Ами аз така го разбирам:

Под цели числа имах предвид, че искам да сортира числата в низходящ ред, без значение колко цифри съдържа даденото число. Когато смених типа на реда от integer на varchar започна да подрежда числата по първата цифра.. Иначе казано ако имам числата например 01, 1, 2, 11, 20 няма да ми ги сортира в този вид, а ще ги подреди 01, 1, 11, 2, 20 (иначе казано ги взима цифра по цифра, а не като цяло число), което мен не ме устройва.

Между другото мисля, че намерих отговор на проблема си като направих следната корекция на зявката:


mysqli_query($conn,'SELECT number FROM table ORDER BY CAST(`number` AS decimal) ASC, number ASC');

Предполагам, че това изобщо не е най-добрият метод за сортиране, но в моя случай помогна.

Много е просто:

Числата 01, 1,2,3,11,22 ще ти ги сортира точно така, както са написани.

01,1,11,2,22 ще е сортирането ако това са стрингове (varchar)

Аз исках отговор на въпрос - ти не отговори.

Сега решаваш проблема, като обратно конвертираш varchar в decimal. Защо ?

  • Автор

Ами точно това е, че те трябва да са точно стрингове, защото в противен случай не мога да запиша числото 01.

Отговор на въпроса ти - според мен са едни и също - дали ще го напишеш 01 или 1 няма значение. Ако греша, моля поправи ме.

Ако трябва да съм честен съвсем случайно стигнах до това "решение" с конвертирането. Без него ми ги подреждаше - 1, 01, 2, 3, 4, 5, ... n

Но като ги конвертирам още веднъж се оправи

Току що, streleca_stz написа:

Ами точно това е, че те трябва да са точно стрингове, защото в противен случай не мога да запиша числото 01.

Отговор на въпроса ти - според мен са едни и също - дали ще го напишеш 01 или 1 няма значение. Ако греша, моля поправи ме.

Ако трябва да съм честен съвсем случайно стигнах до това "решение" с конвертирането. Без него ми ги подреждаше - 1, 01, 2, 3, 4, 5, ... n

Но като ги конвертирам още веднъж се оправи

Ами хубаво. Щом си се оправил, карай така.

  • Автор

Е, ако има по-добър и оптимизиран начин наистина ще се радвам ако го споделиш! :)

преди 10 минути, streleca_stz написа:

Е, ако има по-добър и оптимизиран начин наистина ще се радвам ако го споделиш! :)

Използвай числа щом искаш да сортираш числа.

Аз нещо не схващам ... След като ти трябва форматиране на стринг, защо бараш изобщо SQL-а? В базата ги записвай с int/big int полета и си ги сортирай по тях. А за result-a използвай фомратиране. Прегледай документацията на sprintf в php часта за format.

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    25%
    Дарени 252.69 EUR от нужните 1,000.00 EUR

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.