Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Jak posegregować (7%, 22%, 3%)
Fixer
post
Post #1





Grupa: Zarejestrowani
Postów: 123
Pomógł: 0
Dołączył: 24.10.2004
Skąd: TG

Ostrzeżenie: (0%)
-----


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

Ten post edytował Fixer 8.03.2005, 21:39:55


--------------------
Go to the top of the page
+Quote Post
crash
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----


Jeśli dajesz DESC to czemu się dziwisz, że wyświetla Ci w kolejności malejącej? Użyj ASC...


--------------------
Go to the top of the page
+Quote Post
Fixer
post
Post #3





Grupa: Zarejestrowani
Postów: 123
Pomógł: 0
Dołączył: 24.10.2004
Skąd: TG

Ostrzeżenie: (0%)
-----


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);


Ten post edytował Fixer 8.03.2005, 21:45:55


--------------------
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


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.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Fixer
post
Post #5





Grupa: Zarejestrowani
Postów: 123
Pomógł: 0
Dołączył: 24.10.2004
Skąd: TG

Ostrzeżenie: (0%)
-----


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ć

Ten post edytował Fixer 8.03.2005, 21:47:57


--------------------
Go to the top of the page
+Quote Post
crash
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----


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...


--------------------
Go to the top of the page
+Quote Post
R2r
post
Post #7





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 26.10.2002
Skąd: Tarnowskie Góry

Ostrzeżenie: (0%)
-----


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)


Ten post edytował R2r 9.03.2005, 19:58:36
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


No ale jak nazwa funkcji wskazuje (substring) znowu beda porownywane stringi. IMO najlepiej bedzie zamienic te dane na liczby.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
R2r
post
Post #9





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 26.10.2002
Skąd: Tarnowskie Góry

Ostrzeżenie: (0%)
-----


  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
Go to the top of the page
+Quote Post
Fixer
post
Post #10





Grupa: Zarejestrowani
Postów: 123
Pomógł: 0
Dołączył: 24.10.2004
Skąd: TG

Ostrzeżenie: (0%)
-----


Ok, już sobie poradziłem, wielkie dzieki...


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 09:52