Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Trzy tabele w kupie
Forum PHP.pl > Forum > Bazy danych > MySQL
mabor
Problem tego typu.
Z trzech tabel chcę wyciągnąć dane usera, ilość jego ogloszeń, ilość napisanych przez niego artykułów.
Zapytanie:

  1. SELECT us.id, us.name, count(gi.id) AS ogloszenia, count(ar.id) AS artykuly
  2. FROM users AS us LEFT JOIN gielda AS gi ON (us.id=gi.userid) LEFT JOIN articles AS ar ON(us.id=ar.userid) GROUP BY us.id ORDER BY 2


wartości zwracane:
1 - user1 - 0 - 2 i tu się zgadza
2 - user2 - 24 - 24 a tu nie

faktycznie:
1 - user1 - 0 - 2
2 - user2 - 4 - 6

nie wiem co jest nie tak skoro pierwszego oblicza dobrze.
DeyV
spróbuj tak
  1. SELECT us.id, us.name,
  2. count( DISTINCT gi.id ) AS ogloszenia,
  3. count( DISTINCT ar.id ) AS artykuly
  4. FROM users AS us
  5. LEFT JOIN gielda AS gi ON (us.id=gi.userid)
  6. LEFT JOIN articles AS ar ON (us.id=ar.userid)
  7. GROUP BY us.id
  8. ORDER BY 2
mabor
no jasne. dzięki.

i jeszcze w nawiązaniu do powyższego: czy mając takie przykładowe zapytanie
  1. SELECT us.name, count(DISTINCT ar.id), count(DISTINCT gi.id)
  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

i teraz pytanie jak posortować wg sumy tych countów, tak jak w przykladzie daje zły wynik sortowania
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.