Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> 2x COUNT()
kicaj
post
Post #1





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

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


Mam 3 tabele: users, messages, books
Zapytanie:
  1. SELECT COUNT(m.message_id), u.user_nick
  2. FROM messages m, users u
  3. WHERE m.message_user_id = u.user_id AND u.user_id = 1 LIMIT 1

No i zwraca mi poprawnie!

Drugie zapytanie jest prawie identyczne:
  1. SELECT COUNT(b.book_id), u.user_nick
  2. FROM books b, users u
  3. WHERE b.book_user_id = u.user_id AND u.user_id = 1 LIMIT 1


Zas zapytanie:
  1. SELECT COUNT(b.book_id), COUNT(m.message_id), u.user_nick
  2. FROM books b, messages m, users u
  3. WHERE u.user_id = 1 b.book_user_id = u.user_id AND m.message_user_id = u.user_id LIMIT 1
Zwraca dwie takie same liczby b.book_id i m.message_id

Jak zrobic to w jednym zapytaniu, aby wynik wygladal tak mniejwiecej:
Kod
books: 3; messages: 5; kicaj_


Ten post edytował kicaj_ 4.02.2005, 14:34:49
Go to the top of the page
+Quote Post
popbart
post
Post #2





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 22.04.2004
Skąd: Żoliborz

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


  1. SELECT COUNT(b.book_id), COUNT(m.message_id), u.user_nick
  2. FROM books b INNER JOIN users u ON(b.book_user_id = u.user_id) INNER JOIN messages m ON(m.message_user_id = u.user_id)
  3. WHERE u.user_id = 1
  4. GROUP BY u.user_nick
Go to the top of the page
+Quote Post
kicaj
post
Post #3





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

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


Kod
Array
(
   [0] => 15
   [1] => 15
   [2] => kicaj_
)

A powinno byc:
3
5
kicaj_

[UPDATE]
Szczegolowo przeszukalem forum i znalazlem, po lekkiej modyfikacji:
  1. SELECT u.user_nick, COUNT( DISTINCT b.book_id ) AS books, COUNT( DISTINCT m.message_id ) AS messages
  2. FROM users u
  3. LEFT JOIN books b ON ( u.user_id = b.book_user_id )
  4. LEFT JOIN messages m ON ( u.user_id = m.message_user_id )
  5. WHERE u.user_id =2
  6. GROUP BY u.user_id


Ten post edytował kicaj_ 4.02.2005, 16:53:08
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: 23.08.2025 - 14:37