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]
[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]
[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]
[1][1][140]
[5][2][180]
[6][3][110]
[3][-][150]
[4][-][130]
[2][-][115]
Macie jakieś pomysły jak rozwiązać ten problem?