Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Count z kilku tabel
Siner
post
Post #1





Grupa: Zarejestrowani
Postów: 159
Pomógł: 6
Dołączył: 2.01.2004

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


Chcę zliczyć ilość wystąpień rekordów z 3 różnych tabel. Przykład - zliczyć ile użytkownik ma komentarzy, głosów, serwisów. Co mi przyszło do głowy od razu to.
  1. SELECT users.id, COUNT( comments.id ) AS comments_count, COUNT( votes.id ) AS votes_count, COUNT( services.id ) AS service_count
  2. FROM users, comments, votes, services
  3. WHERE users.id =1 AND comments.user_id = users.id AND votes.user_id = users.id AND services.author_id = users.id
  4. GROUP BY users.id

Ale w każdym z tych 3 wierszy z count mam jedną liczbę i to nie koniecznie jakąś konkretną. Macie jakieś sposoby na rozwiązanie togo problemu?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
sowiq
post
Post #2





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


  1. SELECT COUNT(c.id) AS ilosc_komentarzy,
  2. COUNT(v.id) AS ilosc_glosowan
  3. FROM users u
  4. LEFT JOIN comments c ON (c.user_id = u.id)
  5. LEFT JOIN votes v ON (v.user_id = u.id)
  6. GROUP BY u.id

Ja bym próbował w ten sposób

[edit]
powyższy sposób jest błędny.

Ten post edytował sowiq 6.03.2009, 11:59:16
Go to the top of the page
+Quote Post
phpion
post
Post #3





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Masz 2 wyjścia.
1. Podzapytania.
2. UNION.
Go to the top of the page
+Quote Post
sowiq
post
Post #4





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


~phpion ma rację. Moje zapytanie nie zadziała prawidłowo.
Go to the top of the page
+Quote Post
kefirek
post
Post #5





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

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


Zobacz tak powinno dzialac
  1. SELECT
  2. u.id,
  3. (SELECT COUNT( c.id ) FROM comments c WHERE (u.id=c.user_id)) AS komentarzy,
  4. (SELECT COUNT( v.id ) FROM votes v WHERE (u.id=v.user_id)) AS votes,
  5. (SELECT COUNT( s.id ) FROM services s WHERE (u.id=s.author_id)) AS serwis
  6. FROM users u
  7. WHERE u.id=1


Ten post edytował kefirek 7.03.2009, 12:48:23
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 04:03