Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Sortowanie wyników
Skie
post
Post #1





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

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


Witam,
mam taki skrypt który pobiera z bazy danych listę zalogowanych użytkowników i wyświetla ich w kolejności alfabetycznej. Moje pytanie brzmi: czy da się wynik tego zapytania SELECT wyświetlać w takiej kolejności by najpierw wyświetlał userów o randze admin, następnie premium a na koniec member? Drugorzędnie wyniki byłby sortowane alfabetycznie.


--------------------
Wieloprocesowość i wielowątkowość w PHP, poznaj Kraken PHP!
Serwer HTTP i WebSocket w PHP | Promise/A+
Strona Domowa | Elradia MMORPG
FireFox: make the web better.
Go to the top of the page
+Quote Post
ddiceman
post
Post #2





Grupa: Zarejestrowani
Postów: 326
Pomógł: 121
Dołączył: 23.07.2008
Skąd: Wrocław

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


Wklej strukture bazy danych

albo tak na oko:
  1. ...ORDER BY IF(ranga = 'ADMIN', 3, IF(ranga = 'PREMIUM', 2, 1)) DESC, nazwa_uzytkownika ASC;


Ten post edytował ddiceman 31.07.2008, 11:27:59
Go to the top of the page
+Quote Post
JoShiMa
post
Post #3





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


w zapytaniu
  1. ORDER BY STATUS, nazwa


--------------------
Go to the top of the page
+Quote Post
Skie
post
Post #4





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

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


ddiceman: Dzięki, o tego typu wskazówkę mi chodziło - nieznałem tej struktury z IF'ami, teraz już sobie sam poradzę i dostosuje to do swojego kodu. Mam jeszcze tylko pytanie czy w IF'ie (np. IF rank='Admin') mogę używać tablic?

JoShiMa: gdybym tak mógł zrobić to by nie było problemu, ale ważna jest także kolejność tego grupowania, a nie samo grupowanie.


--------------------
Wieloprocesowość i wielowątkowość w PHP, poznaj Kraken PHP!
Serwer HTTP i WebSocket w PHP | Promise/A+
Strona Domowa | Elradia MMORPG
FireFox: make the web better.
Go to the top of the page
+Quote Post
JoShiMa
post
Post #5





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Cytat(Skie @ 31.07.2008, 12:53:12 ) *
JoShiMa: gdybym tak mógł zrobić to by nie było problemu, ale ważna jest także kolejność tego grupowania, a nie samo grupowanie.

Po pierwsze to nie grupowanie tylko sortowanie. Po drugie właśnie odpowiednio ustawiając pola w sekcji ORDER BY decydujesz o kolejności sortowania.


--------------------
Go to the top of the page
+Quote Post
Skie
post
Post #6





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

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


Cytat(JoShiMa @ 31.07.2008, 13:45:39 ) *
Po pierwsze to nie grupowanie tylko sortowanie. Po drugie właśnie odpowiednio ustawiając pola w sekcji ORDER BY decydujesz o kolejności sortowania.


Tak, ale zastanów się. Po Twojemu sortowanie po rangach też by się odbywało alfabetycznie. I zamiast dostać wynik: admin -> premium -> member dostałbym admin -> member -> premium.


--------------------
Wieloprocesowość i wielowątkowość w PHP, poznaj Kraken PHP!
Serwer HTTP i WebSocket w PHP | Promise/A+
Strona Domowa | Elradia MMORPG
FireFox: make the web better.
Go to the top of the page
+Quote Post
JoShiMa
post
Post #7





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Cytat(Skie @ 31.07.2008, 14:43:36 ) *
Tak, ale zastanów się. Po Twojemu sortowanie po rangach też by się odbywało alfabetycznie.

To zależy jak masz zaimplementowane rangi w tabeli. Na ogół robi się to tak, że poza nazwą rangi jest jeszcze id rangi, które pozwala właśnie w odpowiedni sposób, bez rzeźbienia sortować.


--------------------
Go to the top of the page
+Quote Post
wrzasq
post
Post #8





Grupa: Zarejestrowani
Postów: 206
Pomógł: 18
Dołączył: 6.03.2006
Skąd: Szczecin

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


@Skie: dlatego JoShiMa podal dwa kryteria sortowania. najpierw sortujesz wedlug waznosci rangi, a potem wedlug alfebetycznej nazwy grupy. i to chyba najlatwiejsze, po cholere sie meczyc z jakimis IFami. przeciez to proste sortowanie. nawet jesli masz dwie tabele:

  1. SELECT ... FROM `users` LEFT JOIN `groups` ON `users`.`idGroup` = `groups`.`id` ORDER BY `groups`.`level` DESC, `groups`.`name`


--------------------
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 Aktualny czas: 22.08.2025 - 01:05