Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MYSQL] Sortowanie pola textowego jak numeru
fredman
post 16.06.2009, 13:45:30
Post #1





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 15.12.2006

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


mam pole textowe "numer" w tabeli, które zawiera takie coś 5566/12 . Poe nie może być INT bo potrzebuję tego slasha tam. Teraz jeśli przy pobieraniu wyników dam ORDR BY to sortuje się to oczywiście jak tekst czyli mam kolejność typu:

5566/12
5566/128
5566/3

dało wy się coś zrobić żeby to się sortowało jak liczby? Szczególnie chodzi o ten numer po slashu bo początek 5566/ ustawiam sobie wcześniej i w samym ORDER BY już jest nieistotny.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
wookieb
post 16.06.2009, 13:49:59
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




  1. SELECT *, CAST(SUBSTRING_INDEX(pole, '/', 1) AS SIGNED INTEGER) AS p1, CAST(SUBSTRING_INDEX(pole, '/', -1) AS SIGNED INTEGER) AS p2 FROM tabela ORDER BY p1, p2

Pisane z palca wiec musisz pokombinowac
CAST zmienia typ wartości

Ten post edytował wookieb 16.06.2009, 13:51:04


--------------------
Go to the top of the page
+Quote Post
fredman
post 16.06.2009, 15:15:04
Post #3





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 15.12.2006

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


kurde znalazlem na forum jeszcze ejdne temat i mi nie sortuje, dalej traktuje to jako tekst anie int :/

teraz wyglada to tak:

  1. <?php
  2. $wynik=mysql_query("SELECT  numer FROM tabela  ORDER BY CAST(SUBSTRING_INDEX(numer, '/', -1) as SIGNED INTEGER) DESC");
  3. ?>


może porostu posortuje jakoś tabele z wynikiem ?

Ten post edytował fredman 16.06.2009, 15:15:52
Go to the top of the page
+Quote Post
wookieb
post 16.06.2009, 15:20:17
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Jak nie działa jak działa.
Pokaż jakie masz dane.

Ten post edytował wookieb 16.06.2009, 15:22:42


--------------------
Go to the top of the page
+Quote Post
fredman
post 16.06.2009, 15:48:21
Post #5





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 15.12.2006

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


mam 3 rekordy z polem NUMER typu text

0905/12
0905/128
0905/44


no i jak dam DESC to są tak jak powyzej a jak dam ASC to jest:

0905/44
0905/128
0905/12
Go to the top of the page
+Quote Post
wookieb
post 16.06.2009, 15:50:57
Post #6





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




No u mnie jest ok
0905/128
0905/44
0905/12

Podaj strukturę tabeli (zapytanie) oraz wersję mysql.


--------------------
Go to the top of the page
+Quote Post
fredman
post 16.06.2009, 15:58:28
Post #7





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 15.12.2006

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


Wersja klienta MySQL: 5.0.33


  1. CREATE TABLE `produkty` (
  2. `id_p` int(11) NOT NULL AUTO_INCREMENT,
  3. `grupa` int(11) NOT NULL,
  4. `kategoria` int(11) NOT NULL,
  5. `nazwa_p` text NOT NULL,
  6. `numer` text NOT NULL,
  7. `cena_p2` int(20) DEFAULT NULL,
  8. `cena_p3` int(20) DEFAULT NULL,
  9. `obrazek_p1` varchar(255) NOT NULL,
  10. `obrazek_p2` varchar(255) DEFAULT NULL,
  11. `obrazek_p3` varchar(255) DEFAULT NULL,
  12. PRIMARY KEY (`id_p`)
  13. ) ENGINE=MyISAM DEFAULT CHARSET=ucs2 AUTO_INCREMENT=40 ;


i wyświetlam tak:

  1. <?php
  2. while ( $row= mysql_fetch_array($wynik) ) {
  3. echo  " $row[numer]";
  4. echo "<br />";
  5. }
  6. ?>


Ten post edytował fredman 16.06.2009, 16:13:27
Go to the top of the page
+Quote Post
wookieb
post 16.06.2009, 17:26:33
Post #8





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Wyda ci się to dziwne (dla mnie też jest tongue.gif), ale problem rozwiąże zmiana kodowania. Ja ustawiłem na utf8_general_ci i działa smile.gif
Pamiętaj o zmianie kodowanie dla tabeli a także dla pól tekstowych.


--------------------
Go to the top of the page
+Quote Post
fredman
post 16.06.2009, 17:52:20
Post #9





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 15.12.2006

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


jessssss, teraz działa! dzięki za zaaangażowanie w moj problem no i rozwiązanie go winksmiley.jpg
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 Wersja Lo-Fi Aktualny czas: 19.07.2025 - 14:45