来自两个表的COUNT和SELECT查询

时间:2012-06-12 11:00:25

标签: php sql

我有这两个表:

1. users
   -id
   -name
   -email
   -rank

2. pages
   -user
   -id

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

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

8 个答案:

答案 0 :(得分:3)

select u.*,count(p.*) from users u left join pages p on u.id=p.user group by u.id;

答案 1 :(得分: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

答案 2 :(得分: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

您可以按用户信息进行分组,并计算(计算)每个用户的页数。

答案 3 :(得分: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;

答案 4 :(得分: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

答案 5 :(得分: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 

答案 6 :(得分:0)

这个简单的查询怎么样?

SELECT user, COUNT(*) AS pages FROM page GROUP BY user

答案 7 :(得分:-1)

这可以通过JOIN完成。

例如,

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

将从userid 5中选择所有页面。我将让你完成其余的工作以包含聚合函数;)