Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z sortowaniem mysql
zoom24
post
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 31.12.2011

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


Witam.

Mam problem z poprawnym posortowaniem numerów dokumentu. W bazie mam kolumnę która przechowuje nr w takiej postaci NR/MSC/ROK

przykładowo mam kilka nr w bazie

12/04/2013
3/03/2013
55/12/2013

Problem polega na tym, że powyższe dane chciałbym za pomocą zapytania mysql wyswietlić odpowiednio posortowane a wiec w takiej kolejnosci:
3/03/2013
12/04/2013
55/12/2013


Próbowałem coś w tym stylu

  1. SELECT nr_dok FROM lista_dokumentow ORDER BY nr_dok DESC


Niestety takie sortowanie nie działa tak jak bym tego chciał.
Za sugestie i podpowiedzi dzięki.

Pozdr smile.gif




Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
_Borys_
post
Post #2





Grupa: Zarejestrowani
Postów: 587
Pomógł: 190
Dołączył: 5.02.2011
Skąd: 64-800

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


  1. SELECT nr_dok,msc,rok FROM lista_dokumentow ORDER BY nr_dok ASC


Ten post edytował _Borys_ 11.03.2013, 01:41:33
Go to the top of the page
+Quote Post
Fifi209
post
Post #3





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


@_Borys
O ile dobrze myślę, numer dokumentu to jedno pole tylko smile.gif

@topic
Rozbić trzeba to na nr, msc, rok np jakimś wyrażeniem regularnym

REGEXP


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
zoom24
post
Post #4





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 31.12.2011

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


Dzięki za sugestie.

Tak nr dokumentu to jedno pole. Czyli rozumiem, że trzeba pobrać numery dokumentów za pomocą mysql i przy wyświetlaniu rozbić nr na 3 mniejsze człony i sortować questionmark.gif wink.gif


Pozdr.
Go to the top of the page
+Quote Post
luckyps
post
Post #5





Grupa: Zarejestrowani
Postów: 153
Pomógł: 41
Dołączył: 28.06.2011
Skąd: Częstochowa

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


Mozna by sprobowac czegos takiego.
Go to the top of the page
+Quote Post
Fifi209
post
Post #6





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


@up
Oczywiście, że można.

Można również przebudować tabelę, tak aby inaczej były przetrzymywane dane (w osobnych polach)

Albo użyć funkcji o której ja wspomniałem

Żadnego pobierania i sortowania po stronie PHP! Zapomnij!


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #7





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


  1. ORDER BY year(str_to_date(RIGHT(nr_dok,7), '%m/%Y')), month(str_to_date(RIGHT(nr_dok,7), '%m/%Y'))
Go to the top of the page
+Quote Post
zoom24
post
Post #8





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 31.12.2011

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


Witam ponownie smile.gif

Dziękuję za wszelkie rady, propozycje oraz sugestie.
Rozwiązałem problem w następujący sposób.

W bazie zostawiłem kolumnę nr_dok która przechowuje nr dokumentu wg formatu ROK/MSC/NR

Zapytanie jakie u mnie zadziałało to
  1. SELECT *, STR_TO_DATE(nr_dok,'%Y/%m/%d') AS realdate FROM lista_dokumentow ORDER BY nr_fak DESC


i wszystko ładnie mi sortuje tak jak chciałem smile.gif

Pozdrawiam.
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: 22.08.2025 - 02:11