Kod
SELECT * WHERE warunek ORDER_BY ilosc asc LIMIT N
Efekt zgodny z przewidywaniami: zwraca mi uporządkowaną tablicę - na początku najmniejsze wartości z kolumny "ilosc", na końcu największe. Jak teraz przekonać bazę, by te N "najmniejszych" rekordów posortowała mi malejąco?
Czyli, mamy (dla uproszczenia) 100 liczb (od 1 do 100) w bazie, zapytanie z "ORDER_BY liczba asc LIMIT 5" zwróci mi dokładnie 5 liczb, ale w kolejności: 1,2,3,4,5. Ja chciałbym, aby mi zwróciło to samo, ale w porządku odwrotnym, czyi 5,4,3,2,1.
Używam CI, i do tego celu zamodelowałem sobie:
function get_topsites($number, $order) { $this->db->where (...( tu warunek)...); $this->db->order_by ("visits", $order); // $order przyjmuje wartości "asc" albo "desc" - w tym momencie jest "asc" $this->db->limit($number); $query = $this->db->get ($this->_table); return ($query->result_array()); }
Próbowałem zrobić:
$this->db->order_by ("visits", $order); // $order przyjmuje wartości "asc" albo "desc" $this->db->limit($number); $query = $this->db->get ($this->_table); $this->db->order_by ("visits", "desc");
ale to nie działa tak jak się spodziewałem (i, po głębszym przemyśleniu, chyba nie powinno).
Trochę szukałem po forum i po google, ale jakoś nie umiałem znaleźć tego, co mnie interesuje...