Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Sortowanie danych
Forum PHP.pl > Forum > Przedszkole
fire_dept
Witam,

Mam taki problem z sortowaniem zapytania z bazy danych, zapytanie mam takie:

Kod
SELECT p.*, kp.*, k.nazwa, k.id, k.kategoria_obejmujaca_id, ko.id, ko.name
FROM '.DB_PRODUCT.' p
CROSS JOIN (SELECT * FROM '.DB_PRODUCT_TO_CATEGORY.') AS kp ON (p.id = kp.id_produktu)
CROSS JOIN (SELECT * FROM '.DB_CATEGORY.') AS k ON (k.id = kp.id_kategorii)
CROSS JOIN (SELECT * FROM '.DB_HEAD_CATEGORY.') AS ko ON (k.kategoria_obejmujaca_id = ko.id)
WHERE product_visability = "1"
ORDER BY '.$sort_by.'
'.$pages->limit


gdzie stałe to nazwy tabeli, zmienna $sort_by ma w sobie dane np: p.cena DESC lub ASC a zmienna $pages->limit to zmienna od stronicowania, i gdy chce posortować wyniki to sortuje mi w ten sposób:

Cena jest trzymana w bazie w formacie xx.xx

Kod
95.09
...
91.23
90.05
9.87
9.78
...
9.25
9.10
63.70
63.29
[b]79.34[/b]
78.34


Możecie mi powiedzieć czym to jest spowodowane bo dokładnie tak samo "sortuje" po nazwie produktu etc...
nospor
Cytat
Cena jest trzymana w bazie w formacie xx.xx
Cena to liczba a nie tekst. Cena ma być zapisana w polu LICZBOWYM a nie TEKSTOWYM. A ty masz tekst wiec sortuje ci jak tekst a nie jak liczbe - proste
fire_dept
Niestety nie mogę tego zmienić to nie moja baza i mam w niej nic nie kombinować.
Jest może jakiś prosty sposób na obejście tego, poniżej zamieszczam strukturę danej tabeli może to coś pomoże.
Autorem tej tabeli jest pewnie kilka osób zwarzyszy na polskie i angielskie nazewnictwo.

Kod
id  int(11)
opis text utf8_general_ci
nazwa varchar(60) utf8_general_ci
numer varchar(50) utf8_general_ci
cena     text     utf8_general_ci
kod_kreskowy varchar(254) utf8_general_ci
stan     varchar(254) utf8_general_ci
grupa varchar(32) utf8_general_ci
addtime int(11)
wyszukaj text utf8_general_ci
cena_d text utf8_general_ci
product_visability tinyint(1)
nospor
No to przy sortowaniu musisz zrzutowac tekst na liczbe
http://dev.mysql.com/doc/refman/5.0/en/cas...l#function_cast
fire_dept
Mam jeszcze jedno pytanie może nie związane z tematem ale nie widzę potrzeby aby zakładać nowy.

Na tej bazie danych pracuje też stacjonarny program i czy istnieje możliwość dodania nowej kolumny np. w tabeli produkty, i aby przy imporcie danych z tego programu coś się nie pokrzaczyło, dodałem aby domyślnie do tego pola wpisywał się null czy to wystarczy ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.