2

我有这两张表:

1. users
   -id
   -name
   -email
   -rank

2. pages
   -user
   -id

我需要从用户中选择所有数据并计算他写了多少页(从页面用户是用户表中用户的ID)。

你能把它变成1个复杂的查询吗?

4

8 回答 8

3
select u.*,count(p.*) from users u left join pages p on u.id=p.user group by u.id;
于 2012-06-12T11:03:52.433 回答
2

我不能把它变成一个复杂的查询,但这是一个简单的查询:

SELECT u.name, u.email, u.rank, u.id, count(p.id) as 'PageCount'
FROM Users u
JOIN Pages p ON
    p.id = u.id
GROUP BY u.name, u.email, u.rank, u.id
于 2012-06-12T11:04:18.913 回答
0

是的,这样做:

select u.id, u.name, u.email, u.rank, count(p.id) as 'counter' from users u
inner join pages p on p.user = u.id
group by u.id, u.name, u.email, u.rank

您按用户信息分组并计算(计数)每个用户的页数。

于 2012-06-12T11:02:49.043 回答
0

这个简单的查询怎么样

SELECT user, COUNT(*) AS pages FROM page GROUP BY user
于 2012-06-12T11:11:53.713 回答
0

这个怎么样。

select   u.id, count(p.id) as 'number_of_pages_wrote'
from     users u inner join pages p
on       u.id = p.id
group by u.id;
于 2012-06-12T11:03:00.747 回答
0
select   users.id, users.name,users.email,users.rank, count(pages.id) 
from     users,pages 
where    users.id = pages.user 
group by users.id
于 2012-06-12T11:03:26.620 回答
0

你可以这样做 -

SELECT u.*, p.count
FROM users u,
     (SELECT pa.id, count(1) FROM pages pa WHERE pa.id = u.id) p
WHERE u.id = p.id 
于 2012-06-12T11:03:51.580 回答
-1

这可以通过一个JOIN.

例如,

SELECT * FROM pages 
INNER JOIN users ON (users.id=pages.user) 
WHERE users.id=5

将从用户 ID 5 中选择所有页面。我会让你做剩下的事情来包含聚合函数;)

于 2012-06-12T11:03:11.057 回答