1

これは複雑なクエリであり、PHPで配列値を調整するのではなく、1つのステートメントで実現したいと考えていました。

次の目的の出力を達成するには:

User    Jobs    Total
John D. 5       $1245.67
Mary L. 3       $800.56

これまでのところ、これは私が持っているクエリです:

SELECT
  SUM(job.cost) AS sum,
  COUNT(DISTINCT job.user) as count,
  user.id, user.firstname, user.lastname
FROM      `job`
LEFT JOIN `user` ON job.user = user.id
GROUP BY user.id

しかし、カウント値は間違っています。それは個別のユーザーであるため、もちろんそれぞれが間違っています。これを修正するにはどうすればよいですか?

テーブルuser

id, name, etc.

テーブルjob

id, user, cost

1user対多でjob


アップデート

これは正しく機能しているようです:

SELECT 
  SUM(job.cost) AS sum,
  COUNT(1) as count,
  user.id, user.firstname, user.lastname
FROM `job`
LEFT JOIN `user` ON job.user = user.id
GROUP BY user.id
4

1 に答える 1

2
SET @seq = 0;

SELECT place FROM

(SELECT
  @seq := @seq + 1 AS place
  SUM(job.cost) AS sum,
  COUNT(1) as count,
  user.id, user.firstname, user.lastname
FROM      `job`
LEFT JOIN `user` ON job.user = user.id
GROUP BY user.id
ORDER BY COUNT(1) DESC) 

AS list
WHERE list.id = 'my_user_id'
于 2012-06-27T21:50:08.780 に答える