![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 401 Pomógł: 1 Dołączył: 10.03.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Witajcie, w tabeli mam kolumnę zawierającą miesiące, skróty angielskie: Jan, Feb, Mar, Apr itd. jak posortować dane z bazy według tych miesięcy, żeby się ułożyło ładnie od stycznia po grudzień?
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 437 Pomógł: 42 Dołączył: 16.04.2007 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 945 Pomógł: 7 Dołączył: 15.03.2005 Skąd: katowice Ostrzeżenie: (0%) ![]() ![]() |
SELECT *, DATE_FORMAT(data, '%b') AS data FROM newsy ORDER BY data DESC;
pisane z palca moze coś wyjdzie jak nie %b to moze %f więcej tu http://dev.mysql.com/doc/refman/5.0/en/dat...-functions.html @sebekzosw Tak nie po to posrtuje alfabetycznie i wyjdzie na 1 pozycji april Ten post edytował acztery 3.07.2008, 08:53:22 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 401 Pomógł: 1 Dołączył: 10.03.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Sprawdź to:
Nie, tak nie może być, bo posortowało mi: Apr, Aug, Dec, Feb itd. czyli alfabetycznie, a ja chcę, od stycznia Jan po grudzień Dec ![]() Ten post edytował miedzna 3.07.2008, 08:54:31 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
po pierwsze: jesli masz sposobnosc, to zmien to na daty jak manual przykazal
po drugie: jak nie mozesz to: http://nospor.pl/mysql-faq-n25.html#faq-5 -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 401 Pomógł: 1 Dołączył: 10.03.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
SELECT *, DATE_FORMAT(data, '%b') AS data FROM newsy ORDER BY data DESC; pisane z palca moze coś wyjdzie jak nie %b to moze %f więcej tu http://dev.mysql.com/doc/refman/5.0/en/dat...-functions.html @sebekzosw Tak nie po to posrtuje alfabetycznie i wyjdzie na 1 pozycji april Zrobiłem jak mówisz. zapytanie wygląda tak: SELECT *, DATE_FORMAT(miesiac, '%b') AS sortowanie FROM tabela ORDER BY sortowanie ASC i posortowało mi: Jan, Dec, Nov, Oct, Sep, Aug, itd. może problem tkwi w tym, że pole w którym trzymam miesiące jest polem Char o długości 3? |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 945 Pomógł: 7 Dołączył: 15.03.2005 Skąd: katowice Ostrzeżenie: (0%) ![]() ![]() |
a nie mozesz zienic z Jan np na 1 i tak do 12, moze to być powod. A daj %f. Chodz i tak wątpie ze zadziała jak w bazie masz tylko skróty... Musisz to zrobić ręcznie aby działało w 100% sprawnie.
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
@miedzna w moim poprzednim poscie dostales odpowiedź. Cos z nią nie tak czy jak?
date_format sluzy do zmiany daty na format jaki chcesz, a nie zmiany skrótu na datę. Masz strukture do 4 liter to teraz musisz kombinowac. W moim poprzednim poscie dostales odpowiedź jak masz kombinować. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 401 Pomógł: 1 Dołączył: 10.03.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
@miedzna w moim poprzednim poscie dostales odpowiedź. Cos z nią nie tak czy jak? date_format sluzy do zmiany daty na format jaki chcesz, a nie zmiany skrótu na datę. Masz strukture do 4 liter to teraz musisz kombinowac. W moim poprzednim poscie dostales odpowiedź jak masz kombinować. Kombinowałem i nic mi nie wychodzi, nie wiem jak to posortować, jak daję zapytanie: SELECT *, DATE_FORMAT(miesiac, '%b') AS sortowanie FROM tabela ORDER BY sortowanie ASC to zmienna sortowanie jest NULL ![]() a nie mozesz zienic z Jan np na 1 i tak do 12, moze to być powod. A daj %f. Chodz i tak wątpie ze zadziała jak w bazie masz tylko skróty... Musisz to zrobić ręcznie aby działało w 100% sprawnie. Nie bardzo, bo dane te wysyłam do XMLa a nie chcę w locie zamieniać je na skrócone nazwy, wolę od razu w bazie trzymać jako nazwy. Chyba że znaz, jak szybko w locie zamienić cyferki na skrócone nazwy, poprzez tabeli i str_replace? |
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Kombinowałem i nic mi nie wychodzi, nie wiem jak to posortować, jak daję zapytanie: Czytaj ze zrozumieniem! Pisalem ci przeciez ze date_format tu sie nie przyda. SELECT *, DATE_FORMAT(miesiac, '%b') AS sortowanie FROM tabela ORDER BY sortowanie ASC to zmienna sortowanie jest NULL W moim pierwszym poscie w tym temacie podalem ci co masz zrobic edit: Cytat Nie bardzo, bo dane te wysyłam do XMLa a nie chcę w locie zamieniać je na skrócone nazwy, wolę od razu w bazie trzymać jako nazwy No nie tedy droga. W bazie masz trzymac tak informacje, by latwo sie na nic operowalo. Zamiana cyferek na skrót miesiaca w locie to przeciez banał.
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 401 Pomógł: 1 Dołączył: 10.03.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
@nospor
Zrobiłem jak piszesz: SELECT *, CASE miesiac WHEN Jan THEN 1 WHEN Feb THEN 2 WHEN Mar THEN 3 WHEN Apr THEN 4 WHEN May THEN 5 WHEN Jun THEN 6 WHEN Jul THEN 7 WHEN Aug THEN 8 WHEN Sep THEN 9 WHEN Oct THEN 10 WHEN Nov THEN 11 WHEN Dec THEN 12 ELSE NULL END as sortowanie FROM tabela ORDER BY sortowanie i dostałem MySQL zwrócił komunikat: #1064 - Something is wrong in your syntax obok 'Dec THEN 12 ELSE NULL END as sortowanie FROM tabela ORDER BY sortowanie LI' w linii 1 zrobiłem drugą metodą: SELECT * FROM tabela ORDER BY Jan=1 desc, Feb=2 desc, Mar=3 desc, Apr=4 desc, May=5 desc, Jun=6 desc, Jul=7 desc, Aug=8 desc, Sep=9 desc, Oct=10 desc, Nov=11 desc, Dec=12 desc to samo: MySQL zwrócił komunikat: #1064 - Something is wrong in your syntax obok 'Dec = 12 desc LIMIT 0, 30' w linii 1 |
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Ale Jan, Feb,.... to są teksty. Teksty nalezy brac w apostrofy
'Jan', 'Feb' Ja wiem ze na stronie dalem bez apostrofów, ale tam były liczby. No odrobina zastanowienia się a nie kopiowanie zywcem tez czasem jest potrzebne. edit: pozatym drugiego sposobu to nie zalapales zupelnie ![]()
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 401 Pomógł: 1 Dołączył: 10.03.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Ale Jan, Feb,.... to są teksty. Teksty nalezy brac w apostrofy 'Jan', 'Feb' Ja wiem ze na stronie dalem bez apostrofów, ale tam były liczby. No odrobina zastanowienia się a nie kopiowanie zywcem tez czasem jest potrzebne. edit: pozatym drugiego sposobu to nie zalapales zupelnie ![]()
No tak, teraz jest OK ![]() Dzięki nospor! |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 06:24 |