MySQL查询计数多个表

时间:2013-09-16 16:22:50

标签: php mysql sql

目前,我们有3个查询。在php中,我们遍历第一个,然后多次执行第二次,然后我想在一个查询中执行:

第一个查询是:

SELECT id FROM users

然后在循环结束这些结果,第二个是

SELECT id AS rid, count(recommendedById) FROM users WHERE id=$id

其中$ id是第一个查询中的users.id。

第三个查询是在第二个循环中执行的:

SELECT count(likes) AS likeCounter FROM posts WHERE author_id=$rid

和likeCounter总结为第一个查询。

任何人都可以将其纳入一个查询吗?

期望的结果 结果应该是每个用户一行,他推荐的用户数和他推荐的用户喜欢他们的帖子之和。

2 个答案:

答案 0 :(得分:1)

你可以这样做:

SELECT u.id AS rid, count(recs.id), count(p.likes) AS likeCounter
FROM users u 
LEFT JOIN posts p ON p.author_id=u.id
LEFT JOIN users recs ON recs.recommendedById=u.id
GROUP BY u.id

但是用户有一个id,您使用id表中的users。这不总是1?

答案 1 :(得分:1)

SELECT u.id,COUNT(DISTINCT ruid),sum(p.likes)
FROM users as u
LEFT JOIN (SELECT recommendedById as rid,id as ruid from users) as r ON r.rid = u.id
LEFT JOIN posts p ON p.author_id = ruid
GROUP BY u.id