次のようなものを使用できます。
select p.pid,
p.name,
up.TotalUsers
from projects p
inner join
(
select pid, count(uid) TotalUsers
from users_projects
group by pid
) up
on p.pid = up.pid
order by TotalUsers Desc
-- limit 1
デモで SQL Fiddle を参照してください
これにより、すべてのプロジェクトのリストと、プロジェクトごとの合計ユーザー数が返されます。ほとんどのユーザーにプロジェクトを返したい場合は、limit 1
コメントアウトされた を含めます。
ユーザー数が同じものが複数ある場合project
は、次のようなものを使用する必要があります。
select p.pid,
p.name,
up.TotalUsers
from projects p
inner join
(
select pid, count(uid) TotalUsers
from users_projects
group by pid
) up
on p.pid = up.pid
where totalusers = (select count(*) Total
from users_projects
group by pid
order by total desc
limit 1)
デモで SQL Fiddle を参照してください
フィドルをありがとう@JW