Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Sortowanie wyników
shycat
post 26.05.2011, 23:37:47
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 1
Dołączył: 25.02.2008

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


Witam, zastanawia mnie jak posortować wyniki pewnej bazy portalu:

Kolumny w tabeli:

  1.  
  2. `id`, `pay_typ`, `pay_do`, `ostatnie_logowanie`
  3.  



pay_typ - typ konta jakie posiada uzytkownik (1-darmowe, 2-srebrne, 3-zlote)
pay_do - czas, do kiedy dana usluga platnosci jest wazna - czas w sekundach (time())
ostatnie_logowanie - czas ostatniego logowania - rowniez time()


funkcja do sprawdzania typu platnosci:

  1.  
  2. typ_konta($pay_typ,$pay_do)
  3. {
  4. $time=time();
  5. $ret=1;
  6.  
  7. if ($pay_typ=='2' && $pay_do>$time) $ret=2;
  8. else if ($pay_typ=='3' && $pay_do>$time) $ret=3;
  9.  
  10. return $ret;
  11. }
  12.  



Okey... i teraz jakim zapytaniem do MySQL mozna posortowac wyniki id tak, aby jako pierwsze pojawialy sie wszystkie konta Zlote, posortowane malejaca wg. `ostatnie_logowanie`, a nastepnie wszystkie konta Srebrne i Darmowe rowniez malejaca, ale juz bez dzielenia Srebrne i Darmowe, tylko po prostu wg. `ostatnie_logowanie`


--------------------
Pomogłem? Kilknij "Pomógł"
Go to the top of the page
+Quote Post
zbig
post 27.05.2011, 09:16:07
Post #2





Grupa: Zarejestrowani
Postów: 144
Pomógł: 30
Dołączył: 5.05.2007
Skąd: Mannheim

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


Witam!

Mniej wiecej tak
  1. SELECT m1.* FROM (
  2. SELECT * FROM moja_tabela WHERE pay_typ = 1
  3. ORDER BY ostatnie_logowanie
  4. )m1
  5. UNION
  6. SELECT m2.* FROM (
  7. SELECT * FROM moja_tabela WHERE pay_typ > 1
  8. ORDER BY ostatnie_logowanie
  9. )m2


Pisalem z glowy ale mysle ze powinno byc ok.

Pozdrawiam


--------------------
Flash Flex PHP JAVA RED5 http://www.easyweb24.net
Go to the top of the page
+Quote Post
pmir13
post 27.05.2011, 17:08:48
Post #3





Grupa: Zarejestrowani
Postów: 282
Pomógł: 89
Dołączył: 12.04.2011

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


  1. SELECT * FROM tabela
  2. ORDER BY pay_typ<3,ostatnie_logowanie DESC

O kolejności decyduje więc najpierw wynik wyrażenia pay_typ<3, a potem czas ostatniego logowania malejąco.
pay_typ<3 będzie równe 0 dla złotych, czyli idzie najpierw
pay_typ<3 będzie równe 1 dla reszty, czyli potem
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: 12.06.2025 - 13:54