![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 42 Pomógł: 0 Dołączył: 19.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
W cenniku w tabeli, kolumna zawierająca cenę może zawierać liczbę, bądź inne znaki określające w pewien sposób status ceny. Tak więc kolumna jest typu varchar. Musi to być realizowane w jednej kolumnie, bo tak w tym wypadku jest raczej najwygodniej. Problem pojawia się przy sortowaniu - kiedy chcę sprawdzić która cena jest najniższa. Pole ceny jest typu varchar, więc sortowanie jest alfanumeryczne, czyli cena równa 9 jest za ceną 10 czy np. 89, a powinna być przed. Jak to wykonać w najprostszy sposób, by w momencie sortowania 9 była przed 10 a nie odwrotnie ? Znaki inne niż liczby nie muszą być wtedy oczywiście brane pod uwagę.. chodzi tylko o to, by widzieć najwyższą bądź najniższą cenę na górze..
Nie chcę sortować tego już po wybraniu danych w samym PHP, nie chcę również tworzyć dwóch kolumn (np. w jednej tylko FLOAT, a w drugiej znaczki..). Najlepiej by było to wykonywane przy zapytaniu w ORDER BY CENA ASC ... może da się jakoś konwertować pole CENA na FLOAT przed sortowaniem w samym zapytaniu ? A jeśli tak, to jak ? A przy okazji, istnieje jakiś typ pola w bazie danych do przechowywania cen ? Coś innego niż zmiennoprzecinkowe, tak jak np. w Excelu walutowe ? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
może da się jakoś konwertować pole CENA na FLOAT przed sortowaniem w samym zapytaniu ? http://dev.mysql.com/doc/refman/5.0/en/cas...l#function_cast |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 42 Pomógł: 0 Dołączył: 19.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
próbowałem już, ale wywala mi info o nieprawidłowej składni przy select * from cennik order by cast(cena as float) asc ..
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
W cenniku w tabeli, kolumna zawierająca cenę może zawierać liczbę, bądź inne znaki określające w pewien sposób status ceny. Tak więc kolumna jest typu varchar. Musi to być realizowane w jednej kolumnie, bo tak w tym wypadku jest raczej najwygodniej. No właśnie się przekonujesz, że raczej nie jest. Złamałeś reguły, teraz cierpisz. A przy okazji, istnieje jakiś typ pola w bazie danych do przechowywania cen ? Coś innego niż zmiennoprzecinkowe, tak jak np. w Excelu walutowe ? DECIMAL |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
próbowałem już, ale wywala mi info o nieprawidłowej składni przy select * from cennik order by cast(cena as float) asc .. A widzisz wśród możliwych typów float? Pokombinuj z innymi, na pewno znajdziesz odpowiedni ![]() No i kolega mnie ubiegł ![]() Ten post edytował phpion 19.03.2010, 14:30:27 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 30.04.2025 - 07:17 |