![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 1 Dołączył: 21.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Posiadam następującą listę rekordów: Kod [ID][KOLEJNOŚĆ][PRIORYTET] [1][1][140] [2][-][115] [3][-][150] [4][-][130] [5][2][180] [6][3][110] Musze ją posortować w następujący sposób: 1. Najpierw rosnąco względem kolejności. 2. Jeżeli element nie posiada kolejności, jest sortowany malejąco względem priorytetu. (elementy bez kolejności znajdują się zawsze pod elementami ze zdefiniowaną kolejnością) Niestety, ze względów technicznych w bazie danych kolejność nie jest zapisywana, a ja dysponuję tylko listą elementów: Kod [KOLEJNOŚĆ][ID REKORDU Z PIERWSZEJ TABELI] [1][1] [2][5] [3][6] W jaki sposób mogę tego dokonać? W pierwszym założeniu miało to działać w taki sposób, że pobierałbym z bazy posortowane rekordy malejąco względem priorytetu, a następnie w PHP na podstawie tej listy wyszukiwałbym rekordy po id i przesuwał na górę, ale przy kilku tysiącach elementów ten sposób mógłby zająć dużo czasu. Finalnie posortowana lista powinna wyglądać tak: Kod [ID][KOLEJNOŚĆ][PRIORYTET] [1][1][140] [5][2][180] [6][3][110] [3][-][150] [4][-][130] [2][-][115] Macie jakieś pomysły jak rozwiązać ten problem? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 468 Pomógł: 36 Dołączył: 14.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Nie widze problemu skoro masz takie dane to nawet pobierajac joinem mozesz dac 2 razy order. Order_by kolejnosc ASC, priorytet DESC/ASC. Jezeli bardziej chodzi o rozwiazanie juz na poziomie PHP to Array_multisort to zalatwi
![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.07.2025 - 02:51 |