Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sortowanie wg sumy
Forum PHP.pl > Forum > Bazy danych > MySQL
mabor
Zamiarem moim jest stworzenie coś tak jakby aktywności użytkowników i chcę posortować wg sumy countów wyliczanych z poszczególnych tabel.
  1. SELECT us.name, count(DISTINCT ar.id) AS artykuly, count(DISTINCT gi.id) AS ogloszenia
  2. FROM users AS us LEFT JOIN articles AS ar ON(ar.userid=us.id) LEFT JOIN gielda AS gi ON(gi.userid=us.id) GROUP BY us.name ORDER BY 2 DESC, 3 DESC

takie sortowanie daje wyniki niepoprawny, przykladowo:

user1 | 6 | 4
user2 | 2 | 10

czy istnieje możliwość posortowania wg artykuly + ogloszenia sadsmiley02.gif
popbart
  1. ORDER BY artykuly, ogloszenia
mabor
jest to to samo co w przedstawionym zapytaniu
popbart
Bo jeżeli robisz tak : order by artykuly desc, ogloszenia desc to wynik który pokazałeś jest prawidłowy.
mabor
wg tego co piszesz wynik następujący

user3 | 1 | 1
user2 | 2 | 10
user1 | 6 | 4
popbart
A jaki chcesz mieć?
mabor
jak pisałem, nie wiem czy istnieje taka możliwość, ale zeby sortowanie odbyło się wg sumy tych kolumn.
popbart
  1. SELECT us.name, (count(DISTINCT ar.id) + count(DISTINCT gi.id)) AS suma
  2. FROM users AS us LEFT JOIN articles AS ar ON(ar.userid=us.id) LEFT JOIN gielda AS gi ON(gi.userid=us.id) GROUP BY us.name ORDER BY suma
?
mabor
Przepięknie. Dzięki.
PS. Próbowałem podobnie ale gdzieś musiałem robić błąd, już teraz nie wiem gdzie, ale nieważne, jeszcze raz dzięki.
popbart
Nemo problemo smile.gif
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.