![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 141 Pomógł: 7 Dołączył: 22.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Jak w PHP posortować tablice według pewnego "wzorca" Powiedzmy że do bazy zapisał mi się pewien ciąg ID o pewnej kolejnosci: 1,4,56,2,8 Pobieram to z bazy w taki sposób: ... WHERE id IN(1,4,56,2,8) na moje nieszczęście wyniki śa pobierane i sortowane według id a chce osiągnąć wynik sortowania taki jak w ciągu array( [0] => array( id => 1, ) ) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Prawdopodobnie najzwięźlejszym, najczytelniejszym i najłatwiejszym w utrzymaniu będzie:
Przy (raptem) dziesiątkach czy setkach wyników do posortowania różnice w wydajności pomiędzy różnymi rozwiązaniami będą pomijalne. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 141 Pomógł: 7 Dołączył: 22.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Innym oczywiście tez dziękuje ale to rozwiązanie było najkrótsze i nie wymaga generowania nowych ciągów z CASE Musisz tylko pamiętać, że zarówno FIELD jak i FIND_IN_SET zwrócą 0 dla nieistniejących wartości. Tak więc jeśli w swoim zapytaniu dodasz jakiś warunek OR i w wyniku dostaniesz też ID spoza zakresu uwzględnionego w tych metodach, to takie rekordy zostaną posortowane na początek. Wyjście jest banalne. Zamiast robić:
Ale to taka mała uwaga na przyszłość (IMG:style_emoticons/default/wink.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 10.10.2025 - 09:25 |