Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak posegregować (7%, 22%, 3%)
Forum PHP.pl > Forum > Bazy danych > MySQL
Fixer
Tak jak w temacie...
Czyli segregowanie liczb malejąco

Ma być:
22%
7%
3%

a tymczasem jest:
3%
22%
7%

Niestety nie działa dry.gif
Kod
SELECT * FROM Podatek ORDER BY Stawka DESC

To też niestety nie
Kod
SELECT * FROM Podatek ORDER BY CAST(stawka AS UNSIGNED)

Pola są typu Varchar
crash
Jeśli dajesz DESC to czemu się dziwisz, że wyświetla Ci w kolejności malejącej? Użyj ASC...
Fixer
poprawiłem topic......
ASC i DESC tutaj nic nie zmieni.....dalej będzie nie pokolei

Kod
CREATE TABLE `cennik_podatki` (
  `Id` int(5) NOT NULL auto_increment,
  `Stawka` varchar(8) NOT NULL default '0',
  `Wartosc` decimal(3,2) NOT NULL default '0.00',
  PRIMARY KEY  (`Id`),
  KEY `Id` (`Id`),
  KEY `Id_2` (`Id`),
  KEY `Id_3` (`Id`)
) TYPE=MyISAM AUTO_INCREMENT=4;

INSERT INTO `cennik_podatki` VALUES (1, '22%', 1.22);
INSERT INTO `cennik_podatki` VALUES (2, '7%', 1.07);
INSERT INTO `cennik_podatki` VALUES (3, '0%', 1.00);
dr_bonzo
Bo to sa stringi (varchar) a stringi sa sortowane jak stringi nie jak liczby!
Zmien typ pola na integer /float a procenty dopisuj w php.
Fixer
No właśnie chciałem tego uniknąć....ale jeśli mówicie, że nie ma innej metodu to w takim razie tak będę musiał zrobić
crash
Dziwne bo u mnie sortowanie po polu VARCHAR działa bez żadnego problemu. Spróbuj może usunąć % z tych pól, zamień to pole na jakiegoś INT'a i dodawaj znak % już przy generowaniu strony...
R2r
Na szybko przyszly mi do glowy takie rozwiazania:
  1. SELECT *
  2. FROM Podatek ORDER BY FIELD(Stawka, '3%' , '7%' , '22%')
  3. SELECT *
  4. FROM Podatek ORDER BY SUBSTRING(Stawka,1,LENGTH(Stawka)-1)
dr_bonzo
No ale jak nazwa funkcji wskazuje (substring) znowu beda porownywane stringi. IMO najlepiej bedzie zamienic te dane na liczby.
R2r
  1. ORDER BY SUBSTRING(Stawka,1,LENGTH(Stawka)-1) + 0

//rzeczywiscie, przy drugim rozwiazaniu zapomnialem o tym (-:
Teraz MySQL powinien traktowac to jak typ integer
Fixer
Ok, już sobie poradziłem, wielkie dzieki...
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-2024 Invision Power Services, Inc.