Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: sortowanie
Forum PHP.pl > Forum > Bazy danych > MySQL
lenczewski
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ł?
SongoQ
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?
lenczewski
tak (varchar).
nie chodzi bynajmniej o optymalizacje (bo to przykład raczej akademicki)
Darti
  1. SELECT kol1,kol2,kol3 FROM tabela ORDER BY kol1, kol2, kol3
lenczewski
dane: 0,10,2 są w jednej kolumnie
prond
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;
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.