![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 656 Pomógł: 3 Dołączył: 26.10.2005 Skąd: Częstochowa Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam nastepujący kłopot: mam baze danych w której jedna z kolumn nazywa się nr i wygląda np tak: 28/2007 chodzi mi o to aby posrotwać numery w kolejności malejącej, czyli jak mam takie numery: 19/2007 21/2007 26/2007 27/2007 25/2007 24/2007 23/2007 28/2007 325/06 20/2007 29/2007 i żeby je posortowało. Problem tkwi w tym, iż trzeba uwzględnik przy sortowaniu rok (ta liczba po /) oraz nr (liczba przed /). Jeśli chodzi o wyciągnięcie następnej liczny w kolejności to udało mi się zrobić to tym skryptem:
Ale teraz musze mieć ich kolejność aby baza wyświetliła mi dane względem numerów. Bardzo prosze o pomoc i z góry dziękuje, Łukasz. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 576 Pomógł: 14 Dołączył: 9.11.2005 Ostrzeżenie: (20%) ![]() ![]() |
Najprosciej będzie, jesli masz jeszcze mozliwosc zmien w bazie danych ten numer na 2 kolunmy -
| Numer | Rok | wtedy bedzie latwo posortowac na poziomie mysql |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 84 Pomógł: 0 Dołączył: 17.08.2006 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
hmm, a nie łatwiej w tym wypadku będzie wyciągnąć wszystko i posortować sobie tablicę z poziomu php ? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 576 Pomógł: 14 Dołączył: 9.11.2005 Ostrzeżenie: (20%) ![]() ![]() |
a jak posortujesz wartosci ktore kolega podał ?
26/2007 25/2007 Trzeba to rozdzielac - sortowac i skladac .. a po co |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 656 Pomógł: 3 Dołączył: 26.10.2005 Skąd: Częstochowa Ostrzeżenie: (0%) ![]() ![]() |
@Lonas
czy bede mial 2 kolumny, czy rozdziele w php według explode '/' na 2 tablice to wychodzi na to samo. Ten post edytował misiek172 27.02.2007, 16:08:30 |
|
|
![]()
Post
#6
|
|
Grupa: Nieautoryzowani Postów: 92 Pomógł: 15 Dołączył: 21.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
posotuje wedlug roku a nastepnie wedlug numeru. jesli chcesz odwrotnie to tylko odwroc rok i numerek na koncu. jak cos to pisz. jak bede wiedzial, pomoge. pozdr sorka powinno byc tak
ech a tak naprawde jesli ma byc sortowanie malejace to powinno byc tak (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ciekawe ile jeszcze razy bede edytowal tego posta (IMG:http://forum.php.pl/style_emoticons/default/blink.gif) a zeby nie tworzyc dodatkowych niepotrzebnych 2 kolumn numerek i rok to mozna to zrobic tak
jeszcze jedno, zauwazylem ze masz jeden wpis 325/06 tak wiec zeby mimo wszystko dobrze sortowalao to trzeba jeszcze inaczej to zrobic ALE warunkiem jest ze nie ma daty starszej niz 2000
a jesli ochi o zwrocenie nastepnego numeru to mozna uzyc tego juesli masz ten wpis z rokiem w postaci 2 cyfrowej 325/06
lub tak jesli kazda data jest w postaci 4 cyfrowej (2006,2007)
select w przypadku tych danych 19/2007 21/2007 26/2007 27/2007 25/2007 24/2007 23/2007 28/2007 325/06 20/2007 29/2007 zwroci: 30/2007 Ten post edytował heaven 28.02.2007, 14:18:09 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 656 Pomógł: 3 Dołączył: 26.10.2005 Skąd: Częstochowa Ostrzeżenie: (0%) ![]() ![]() |
Spoko dzięli wielkie działa (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Wogóle niezłe zapytania, skąd ty stary masz taką wiedze o MySQL? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Podziwiam jeśli chodzi o te zapytania powyżej. |
|
|
![]()
Post
#8
|
|
Grupa: Nieautoryzowani Postów: 92 Pomógł: 15 Dołączył: 21.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Hej.
Żeby bylo śmieszniej to Ci powiem ze wiedze mamy podobną zapewne. Pierszy raz pisalem zapytanie SQL z funkcjami do stringu i conwersji typu. Wiedzialem tylko co chce zrobic a reszta to manual (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) zresztą tak to wydedukowalem. skoro masz stringi typu 27/2007 to wystarczy wyciagnac ciag do znaku "/" a nastepnie od znaku "/". Manual. i jest SUBSTRING_INDEX(z jakiego pola, znak rozdzielajacy, do ktorego znaku rozdzielajacego) (moze jest tez inna funkcja ale akurat ta mi w oko wpadla (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) czyli w Twoim przypadku zeby wyciagnac numer trzeba pobrac z pola nr, jedną daną do pierwszego znaku "/". czyli mamy juz numer teraz rok. pisze tez w manualu ze jak ostatni argument przyjmuje wartosc ujemna to dane czyta od konca a wlasnie na koncu jest rok wiec
no i moglo by sie wydawac ze to juz wszystko ale zauwaz ze teraz przy sortowaniu liczba 14 bedzie mniejsza niz 6 a to dlatego ze on nie wie ze to sa liczby tylko traktuje to jako stringi. porownanie pierwszego znaku czyli 6 jest wieksze o 1. trzeba mu wiec powiedziec zeby zamienil ten string na liczby Manual i jest CONVERT( co, i na co) czyli konwertujemy SUBSTRING_INDEX(nr, '/', 1) na SIGNED wiec finalnie mamy cos takiego
i to sa numery
a to rok jako ze miales tam jedna date 06 a nie 2006 wiec ogolnie mozna obciac 2 piersze cyfry ze wszystkich lat bo 06 jest mniejsze od np 2005 Manual i jest RIGHT(co, ile znakow) funkcja zwraca dana ilosc znakow liczac od prawej czyli teraz rok odczytujemy tak
czyli 06 bedzie 06 a 2007 bedzie 07 widac ze dla roku 1999 bedzie to 99 wiec jesli masz tam daty tez starsze niz 2000 to bedzie zle sortowalo skoro juz mamy wszsytko to wystarczy teraz dodac SELECT i posortowac wedlog tych parametrow malejaco (DESC) (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
pozdrawiam. Ten post edytował heaven 1.03.2007, 16:32:01 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 09:48 |