Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Sumowanie zliczonych rekordów
devbazy
post 6.04.2011, 18:51:39
Post #1





Grupa: Zarejestrowani
Postów: 93
Pomógł: 4
Dołączył: 10.08.2009

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


Cześć,

główkuję nad tym problemem już dość długo i raczej sobie sam nie poradzę, dlatego też prosiłbym tutejszych bywalców o pomoc. Skonstruowałem sobie pewne zapytanie, które wygląda następująco:

  1. SELECT u.userid, u.useracc,
  2. (SELECT COUNT(*) FROM photos g WHERE g.photos_user=u.userid) AS pt
  3. (SELECT COUNT(*) FROM comments c WHERE c.comment_author=u.userid) AS com,
  4. (SELECT COUNT(*) FROM posts p WHERE p.post_author=u.userid) AS post
  5. FROM users u WHERE u.useracc='4' GROUP BY u.userid ORDER BY pt DESC, com DESC, post DESC


Chciałbym jednak, by ilość rekordów, które zostały wcześniej wyciągnięte z tabel (photos, comments, posts) zostały zsumowane, a następnie zostały wyświetlane od największego. Zobrazuje to konkretniej przykładem, który niestety do końca nie działa:

  1. SELECT u.userid, u.useracc, (pt+com+post) AS total,
  2. (SELECT COUNT(*) FROM photos g WHERE g.photo_user=u.userid) AS pt,
  3. (SELECT COUNT(*) FROM comments c WHERE c.comment_author=u.userid) AS com,
  4. (SELECT COUNT(*) FROM posts p WHERE p.post_author=u.userid) AS post
  5. FROM users u WHERE u.useracc='4' GROUP BY u.userid ORDER BY total DESC


Kombinowałem już z SUM(), LEFT JOIN, UNION, ale najwidoczniej coś robiłem nie tak, bo co rusz pojawiał się nowy problem.

Z góry dzięki za jakąkolwiek chęć pomocy.

Ten post edytował solid23 6.04.2011, 19:37:14
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
nospor
post 7.04.2011, 07:23:23
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No to:
(pt+com+post) AS total,
powinno się znaleźć po wyliczeniach liczb a nie przed. Przecież przed jeszcze nie istnieje pt, com i post


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
devbazy
post 7.04.2011, 08:45:14
Post #3





Grupa: Zarejestrowani
Postów: 93
Pomógł: 4
Dołączył: 10.08.2009

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


Cytat(nospor @ 7.04.2011, 08:23:23 ) *
No to:
(pt+com+post) AS total,
powinno się znaleźć po wyliczeniach liczb a nie przed. Przecież przed jeszcze nie istnieje pt, com i post


Próbowałem również dać to po wyliczeniach, ale problem jest wciąż ten sam ("Unknown column 'pt' in 'field list'"). Nie jestem pewien czy jest w ogóle możliwość sumowania wartości aliasów, bo nigdy wcześniej się z tym nie spotkałem.
Go to the top of the page
+Quote Post
nospor
post 7.04.2011, 08:53:00
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No dobra, to wywal to z select, ale przy ORDER powinno już działac

...order by (pt+com+post) desc


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ToAr
post 7.04.2011, 08:55:18
Post #5





Grupa: Zarejestrowani
Postów: 49
Pomógł: 18
Dołączył: 7.04.2011
Skąd: Toruń

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


musisz to umieścić najlepiej w podzapytaniu, czyli:

  1.  
  2. SELECT (pt+com+post) AS total FROM (SELECT u.userid, u.useracc,
  3. (SELECT COUNT(*) FROM photos g WHERE g.photo_user=u.userid) AS pt,
  4. (SELECT COUNT(*) FROM comments c WHERE c.comment_author=u.userid) AS com,
  5. (SELECT COUNT(*) FROM posts p WHERE p.post_author=u.userid) AS post
  6. FROM users u WHERE u.useracc='4' GROUP BY u.userid) AS details ORDER BY total DESC
  7.  
Go to the top of the page
+Quote Post
devbazy
post 7.04.2011, 09:36:09
Post #6





Grupa: Zarejestrowani
Postów: 93
Pomógł: 4
Dołączył: 10.08.2009

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


@nospor: Po tych zmianach wszystko działa jak należy.

Dzięki za pomoc, panowie.
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 Wersja Lo-Fi Aktualny czas: 18.07.2025 - 08:40