如何计算一列的值并考虑另一列的值 table

How to calculate the values of one column taking into account the values from another table

我需要一个查询,允许我计算一个列的值并考虑另一个 table 中的值,更准确地说,我需要计算用户是否仍然活跃(如果用户有所有过期的角色,那么他是不活跃的),考虑到 departure_date 第二个 table

user_role table

id_user id_role departure_date
1 1 2022-05-05
1 2 2022-06-18
2 1 2022-04-12

用户 table

id_user name
1 George
2 John
3 Alex

我想 return 这个 table,其中 1 是活动的,0 是不活动的:

用户 table

id_user name status
1 George 1
2 John 0
3 Alex 0

此时,我进行了查询,其中 return 是我的所有非活动用户和具有一个或多个分配角色的活动用户。我想获取所有用户,包括那些没有指定角色的用户(例如 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

提前致谢

您不需要联接和聚合。
使用 EXISTS:

SELECT u.*,
       EXISTS (
         SELECT 1 
         FROM user_management.user_organization_role r 
         WHERE r.id_user = u.id_user AND r.departure_date_organization > CURRENT_DATE
       ) status
FROM user_management.user u;