![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 0 Dołączył: 21.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Czy istnieje mozliwosci sortowania w MySQL wg zdefiniowanego przeze mnie klucza ? Np mam w tabeli piec wierszy w tabeli o kolejnych ID -> 1,2,3,4,5 i chcialbym sobie posortowac wg mojego klucza np Kod Select id ..... order by klucz '2,3,4', id desc aby otrzymac ID w kolejnosci 2,3,4,1,5. Ewentualnie sortowac text wg mojego wzorca a nie tylko alfabetycznie/odwrotnie alfabetycznieNie moge sie doszukac w manualu ;( - z gory dziekuje za pomoc |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 278 Pomógł: 0 Dołączył: 21.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
Kod ORDER BY klucz i bedzie wyswietlacz pola np. klucz alfabetycznie tzn. 1 2 3... A B C.. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 0 Dołączył: 21.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
Rozumie iz musze sobie klucz istawic jako pole tabeli i wypelnic je odpowiednimi wartosciami - nie ma mozliwosci zdefiniwania takiego klucza recznie (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
dzieki za info |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 278 Pomógł: 0 Dołączył: 21.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
tak; np:
ORDER BY sort id|nazwa|sort| 2|abc|1 4|bcd|2 1|ssd|3 3|we|4 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 1 Dołączył: 29.07.2003 Ostrzeżenie: (10%) ![]() ![]() |
wozniak
...mógłbyć przedstawić jakiś przykład? Bo trudno mi zrozumieć twój post... Z góry dzięki. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
no niestety spenalzo, ale to nic nie da. To jest określenie tylko warunku, a nie kolejności
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
tutaj chciałem osiągnąć coś takiego jak Ty. Jedynym wyjściem wydaje się być rozwiązanie zaproponowane przez kolege spenelazo lub utworzenie osobnego pola np.o nazwie kolejność i wg. niego sortowanie, chyba, że wrzucisz to wszystko do php i będziesz sortował tablice, jednak MySQL prawdopodobnie zrobi to szybciej (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Jak coś znajdziesz to pisz....
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 1 Dołączył: 29.07.2003 Ostrzeżenie: (10%) ![]() ![]() |
Ja szukając w google natrafiłem na coś takiego:
Cytat A common question on the mailing lists is how to sort results in a particular order. Just use the FIELD function: SELECT * FROM tickets ORDER BY FIELD(priority, 'High', 'Normal', 'Low', 'The Abyss'); link: http://dev.mysql.com/doc/refman/5.0/en/sorting-rows.html . Tylko mam jakieś problemy z funkcją FIELD (nie rozpoznaje funkcji), może to dlatgo że pracuję na SQLite. |
|
|
![]()
Post
#11
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
@intol mi ta funkcja dziala, a mam mysql 4.1
na tej stronce tez byl inny kod: Też dziala (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#12
|
|
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%) ![]() ![]() |
Ten temat sie juz przez forum przewijal. Oczywiscie najlepszym dla wydajnosci jest podanie wartosci w ORDER BY dla sortowania. Dla pewnosci polecam uzyc explain
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
SongoQ proszę Cię abyś rozwiną swoją myśl. Jeśli to już było to proszę Cię abyś zapodał linka (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Dzięki !
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 0 Dołączył: 21.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
Podsumowuja temat przynajmniej dla mnie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
okreslona kolejnosc id (INT) otrzymamy po operacji Kod SELECT id FROM tabela ORDER BY id = ( 2 +0 ) DESC , id = ( 3 +0 ) DESC , id = ( 4 +0 ) DESC , id = ( 1 +0 ) DESC operacja (1 + 0 ) - to rzutowanie do INT znacznie przyspieszajace operacje SELECT (oczywiscie uzalezniam to od rodzaju pola ID) |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Jak podajesz:
id=2 to jest int id='2' to jest string wiec teoretycznie nie musisz robic +0. |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 1 Dołączył: 29.07.2003 Ostrzeżenie: (10%) ![]() ![]() |
Moim zdaniem rozwiązanie
Kod WHEN '6' THEN 1 WHEN '12' THEN 2 WHEN '7' THEN 3 WHEN '1' THEN 4 WHEN '2' THEN 5 ELSE NULL jest jednak szybsze niz to 2 posty wyzej (sprawdzamy - w optymistycznym wariancie - tylko raz, a nie cztery razy). |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Różnice bedą tak minimalne, że pewnie niezauważalne...
|
|
|
![]()
Post
#18
|
|
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%) ![]() ![]() |
@TomASS Oczywiscie chodzilo mi o sposob ktory podal @jach - troszeczke mozna to uproscic.
@spenalzo Cytat Różnice bedą tak minimalne, że pewnie niezauważalne... Wladuj do DB kilka milionow rekordow i na pewno zobaczysz roznice. (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 10.10.2025 - 02:02 |