[MySQL] Problem z napisaniem zapytania

0

Witam!

Od paru godzin męczę się jak napisać zapytanie. Mam trzy tabele:

User:
user_id, user_name, user_pass

Thread:
thread_id, user_id, thread_text

post:
Post_id, user_id, Post_text

i teraz męczę się z kwerendą która mi zwróci:

user_id, user_name, user_pass, count(post_id), count(thread_id)

dla danego uzytkownika. tylko ważna sprawa, zeby dany uzyszkodnik pojawił się w wynikach nawet jeżeli obydwa count()=0.

na razie udało mi się tą sprawę załatwić dwoma zapytaniami:

SELECT * FROM (SELECT user.*,count(post.post_id) FROM user left join post on post.user_id=1 group by user.user_id) as usr where usr.user_id=1

SELECT count(thread.thread_id) FROM thread where thread.user_id=1;

Czy da się to zmieścić w jednym zapytaniu?

0
SELECT u.user_id, u.user_name, u.user_pass, count(p.*) posts, count(t.*) threads
FROM user u, post p, thread t
WHERE p.user_id = u.user_id AND t.user_id = u.user_id
GROUP BY u.user_id, u.user_name, u.user_pass
0

MisiekD, to nie za bardzo działa, z tego co widze to MySQL ma problem z częścią count(p.*), oto jaki komunikat dostaję:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') post, count(t.) thread FROM user u, post p, thread t WHERE p.user_id = u.use' at line 1

MySQL mam w wersji 5.0.24a, jeśli to coś zmienia.

Aha, jeszcze nie rozumiem fragmentu "count(p.*) posts"

0

no to

SELECT 
  u.user_id, 
  u.user_name, 
  u.user_pass, 
  SELECT count(*) FROM post WHERE user_id = u.user_id,
  SELECT count(*) FROM thread WHERE user_id = u.user_id
FROM user u
0

MisiekD, [browar] [browar] [browar]

SELECT
  u.user_id,
  u.user_name,
  u.user_pass,
  (SELECT count(*) FROM post WHERE user_id = u.user_id),
  (SELECT count(*) FROM thread WHERE user_id = u.user_id)
FROM user u

jedyna zmiana to te wewnętrzne SELECT'y trzeba było dać w nawiasach:)
Wielkie dzięki:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1