1

目前,我们有 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 总结为第一个查询。

任何人都能够将其纳入一个查询?

期望的结果 结果应该是每个用户的一行,其中包含他推荐的用户数和他推荐的用户在他们的帖子上获得的喜欢的总和。

4

2 回答 2

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
于 2013-09-16T16:33:54.503 回答
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,你idusers表中使用。不总是1吗?

于 2013-09-16T16:25:41.727 回答