Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> sortowanie
lenczewski
post
Post #1





Grupa: Zarejestrowani
Postów: 159
Pomógł: 1
Dołączył: 31.08.2005

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


witam, mam dane typu:

Kod
0,2,3
0,2,5
0,4,1
0,10,2


chciałbym jes posortowac właśnie wtaki sposób jak napisałem, mysql sortuje mi je tak:

Kod
0,10,2
0,2,3
0,2,5
0,4,1


Macie jakiś pomysł?


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





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Hm troche dziwne masz te dane ulozone i normalnie to sie tak nie da. Mozna by bylo explode zrobic jakas tabele tymczasowa i wtedy sorta ele to jest nieoptymalne. Wydaje mi sie ze mozna by bylo troszeczke inaczej przebudowac tabele.

Te dane ktore podales to varchar?


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





Grupa: Zarejestrowani
Postów: 159
Pomógł: 1
Dołączył: 31.08.2005

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


tak (varchar).
nie chodzi bynajmniej o optymalizacje (bo to przykład raczej akademicki)


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





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

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


  1. SELECT kol1,kol2,kol3 FROM tabela ORDER BY kol1, kol2, kol3


--------------------
The answer is out there, Neo. It's looking for you. And it will find you, if you want it to.
SERVER_SOFTWARE : Apache/2.2.4 (Win32) PHP/5.2.1
MySQL Client API version : 5.0.27
Go to the top of the page
+Quote Post
lenczewski
post
Post #5





Grupa: Zarejestrowani
Postów: 159
Pomógł: 1
Dołączył: 31.08.2005

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


dane: 0,10,2 są w jednej kolumnie


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





Grupa: Zarejestrowani
Postów: 254
Pomógł: 10
Dołączył: 8.11.2006
Skąd: Warszawa

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


Ciekawej rzeczy oczekujesz od bazy danych - ma się domyślić, że ten string to liczby oddzielone przecinkami.

Jeżeli ilość liczb w tym stringu jest stała to możesz je wyciągnąć używając np SUBSTRING_INDEX, następnie zrzutować na liczby przy pomocy CAST ( cos AS UNSIGNED)

  1. CAST (SUBSTRING_INDEX(kol, ',', 1) AS UNSIGNED) AS number_one, ...


i dopiero posortować.


Jak szukasz akademickiego rozwiązania tego problemu polecam Ci przejść na PostgreSQL.
Tam możesz zrobić coś takiego:
  1. SELECT
  2. string_to_array(strCol,',') AS arrCol
  3. FROM tab ORDER BY arrCol;


--------------------
--------------------------------------------------------------------------------
weblog.axent.pl
--------------------------------------------------------------------------------
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: 21.08.2025 - 00:58