Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Sortowanie wyników
Forum PHP.pl > Forum > PHP
Skie
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.
ddiceman
Wklej strukture bazy danych

albo tak na oko:
  1. ...ORDER BY IF(ranga = 'ADMIN', 3, IF(ranga = 'PREMIUM', 2, 1)) DESC, nazwa_uzytkownika ASC;
JoShiMa
w zapytaniu
  1. ORDER BY STATUS, nazwa
Skie
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.
JoShiMa
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.
Skie
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.
JoShiMa
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ć.
wrzasq
@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`
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.