我需要一个查询,允许我计算一列的值,同时考虑到另一个表中的值,更准确地说,我需要计算用户是否仍然处于活动状态(如果一个用户拥有所有过期的角色,那么他处于非活动状态),同时考虑到第二个表中的离开日期
user_role桌
id_user | id_role | departure_date |
---|---|---|
1 | 1 | 2022-05-05 |
1 | 2 | 2022-06-18 |
2 | 1 | 2022-04-12 |
user桌
id_user | name |
---|---|
1 | George |
2 | John |
3 | Alex |
我想返回此表,其中1处于活动状态,0处于非活动状态:
user桌
id_user | name | status |
---|---|---|
1 | George | 1 |
2 | John | 0 |
3 | Alex | 0 |
现在,我已经做了一个查询,它返回我的所有非活动用户和具有一个或多个分配角色的活动用户.我想获取所有用户,包括那些没有分配角色的用户(如我的示例中的Alex)
SELECT user_management.user.*,
if(count(CASE when current_date() > departure_date_organization
then 1 END) = count(*),0,1) as status
FROM user_management.user,
user_organization_role
WHERE user.id_user = user_management.user_organization_role.id_user
GROUP BY user.id_user;
使用我的查询,我得到了这个结果,它不包含Alex
:
id_user | name | status |
---|---|---|
1 | George | 1 |
2 | John | 0 |
提前谢谢