0

「users」と「projects」の2つのテーブルがあります

ユーザーテーブル:

idユーザー名


1サム

2ピーター

3アンディ

プロジェクトテーブル:

idタイトルuid


1 pr1 0

2 pr2 1

3 pr3 2

4 pr4 1

projects.uidは、ジョブを実行するユーザーIDを表し、0は、このプロジェクトがまだどのユーザーにも割り当てられていないことを意味します。

ユーザーに基づいてプロジェクトをカウントしてグループ化し、次のようなものを返すクエリが必要です。

uid project_count


01

1 2

2 1

30

4

3 に答える 3

2

戻ってこないのでusername、必要なのは次のprojectsテーブルだけです。

select u.id, count(*) as project_count
from users u
left outer join projects p on u.id = p.uid 
group by u.id
order by u.id

ユーザー名も必要な場合は、次のように実行できます。

select u.id, u.username, count(*) as project_count
from users u
left outer join projects p on u.id = p.uid
group by u.id, u.username
order by u.id
于 2012-04-25T14:23:58.233 に答える
0

あなたの答えをどうもありがとう、しかしそれらのどれも正しい行を返さないようです、

これが私の新しく見つけた答えです:

SELECT users.id,(SELECT COUNT(1) FROM projects WHERE projects.user_id = users.id) as 'count' FROM users ORDER BY id

パフォーマンスについてはよくわかりませんが、現在は機能しています...

于 2012-04-29T09:35:33.970 に答える
0
select u.id, count(p.uid)
from users u
inner join project p 
on u.id = p.uid
group by p.uid
于 2012-04-25T14:24:18.153 に答える