Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Sortowanie rekordów
ZaqU
post 23.02.2014, 15:42:18
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?
Go to the top of the page
+Quote Post
jacobson
post 23.02.2014, 16:23:47
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 smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 02:51