Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> ORDER, LIMIT, (re)ORDER
abort
post
Post #1





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

Ostrzeżenie: (0%)
-----


Krótko: robię zapytanie do bazy, zwykły:
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:
  1. function get_topsites($number, $order) {
  2. $this->db->where (...( tu warunek)...);
  3. $this->db->order_by ("visits", $order); // $order przyjmuje wartości "asc" albo "desc" - w tym momencie jest "asc"
  4. $this->db->limit($number);
  5. $query = $this->db->get ($this->_table);
  6. return ($query->result_array());
  7. }

Próbowałem zrobić:
  1. $this->db->order_by ("visits", $order); // $order przyjmuje wartości "asc" albo "desc"
  2. $this->db->limit($number);
  3. $query = $this->db->get ($this->_table);
  4. $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...
Go to the top of the page
+Quote Post

Posty w temacie


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 Aktualny czas: 21.08.2025 - 04:28