SQL Query与另一个表中的count和avg连接

And*_*rew -3 php mysql sql codeigniter

实际上数学似乎并没有加起来.

这是我正在使用的查询和我正在尝试访问的2个表(包含所有真实数据).

SQL中的这个查询拉动Steve Smith了27个和27个计数amount.它应该是17.在同一个查询中它显示John Smith有4个和2个计数amount.

SELECT
user.*,
IFNULL(SUM(collection.amount), 0) AS usertotal,
COUNT(collection.amount) AS userunique
FROM user
LEFT JOIN collection
ON user.id = collection.userid
GROUP BY collection.amount`
Run Code Online (Sandbox Code Playgroud)

表1(命名user):

id | firstname | lastname | username | email
1  | Steve     | Smith    | SteveS   | Steve@Smith.com
2  | John      | Smith    | JohnSmith| John@Smith.com
Run Code Online (Sandbox Code Playgroud)

表2(命名collection):

id|userid|carid |amount
1   1   74  1
10  2   130 1
11  2   48  1
12  2   414 1
13  2   415 1
14  2   66  1
15  2   404 1
16  2   57  2
17  2   331 1
18  2   264 1
19  2   325 1
20  2   51  2
21  2   185 1
24  1   168 1
25  1   11  1
26  1   315 1
27  1   51  1
28  1   210 1
29  1   433 1
30  1   434 1
31  1   460 1
32  1   75  1
33  1   238 1
34  1   226 1
35  1   396 1
36  1   174 1
37  1   12  1
38  1   328 1
39  1   4   1



id| UN | Amount
1 | 4  | 457
2 | 4  | 28
3 | 2  | 234
4 | 1  | 235
5 | 2  | 1
Run Code Online (Sandbox Code Playgroud)

我需要一个查询来获取用户名的完整列表,以及user.id和collection.UN之间的内连接(在金额列上使用sum和count)

我不知道SQL查询,无法弄明白我的生活.救命?

谢谢,

Arn*_*ane 5

SELECT 
  user.UN as username, 
  IFNULL(SUM(collection.Amount), 0) AS sum,
  COUNT(collection.Amount) AS count
FROM user
LEFT JOIN collection
  ON user.id = collection.UN
GROUP BY user.id
Run Code Online (Sandbox Code Playgroud)

您说您想要使用INNER JOIN,但这不会显示那些在集合表中没有记录的用户.所以不是我用LEFT JOIN,使用户的整个列表将被退回,并且COUNTSUM它们的量为0,如果他们没有任何.