在 mysql 中创建查询时出现问题


Issue creating query in mysql

我在mySql数据库中有两个表,如下所示:

组:

| IDGroup| IDRat| Type| Category|
| 708    | 354  | 1   | A       |
| 709    | 354  | 1   | C       |

其中IDGroup是主键。

用户:

| IDUser| Name| Surname | IDGroup |
| 1     | John| Doe     | 708     |
| 2     | Mick| Caine   | 708     |

主键IDUser

我想创建一个查询,该查询接收 IDRat 作为参数并返回如下结果:

| IDGroup| Type| Category | Number_of_Users_in_this_group |

顾名思义,第四列表示与组关联的用户数。

例如,传递我想要的IDRat = 354获得以下结果:

| IDGroup| Type| Category | Number_of_Users_in_this_group |
| 708    | 1   | A        | 2                             |
| 709    | 1   | C        | 0                             |

以下查询执行所需的操作:

SELECT g.IDGroup, g.Type, g.Category, COUNT(u.IDGroup) 
FROM GROUPS g left join
     USERS u
     on g.IDGroup = u.IDGroup 
WHERE IDRat = XXX
GROUP BY g.IDGroup;

left join保留所有组。 当没有匹配项时,count()将返回0where子句执行筛选。

SELECT IDGroup,Type,Category,COUNT(u.IDGroup) as NoUsers
FROM GROUPS g 
LEFT JOIN USERS u ON g.IDGroup=u.IDGroup 
WHERE IDRat=354 GROUP BY g.IDGroup 

选择必填列并按 IDGroup 连接这些表和分组结果

select IDGroup,Type,Category,COUNT(IDGroup) as Number_of_Users_in_this_group
FROM GROUPS JOIN USERS WHERE GROUPS .IDGroup=USERS .IDGroup 
HAVING IDRat=354 GROUP BY IDGroup