Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sortowanie rekordów
Forum PHP.pl > Forum > PHP
ZaqU
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?
jacobson
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 smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.