[英]How to calculate the values of one column taking into account the values from another table
我需要一個查詢,允許我計算列的值,同時考慮另一個表中的值,更准確地說,我需要計算用戶是否仍然處於活動狀態(如果用戶具有所有過期角色,則他處於非活動狀態) ,考慮到第二張表的department_date
用戶角色表
id_user | id_role | 出發日期 |
---|---|---|
1 | 1 | 2022-05-05 |
1 | 2 | 2022-06-18 |
2 | 1 | 2022-04-12 |
用戶表
id_user | 姓名 |
---|---|
1 | 喬治 |
2 | 約翰 |
3 | 亞歷克斯 |
我想返回這個表,其中 1 處於活動狀態,0 處於非活動狀態:
用戶表
id_user | 姓名 | 地位 |
---|---|---|
1 | 喬治 | 1 |
2 | 約翰 | 0 |
3 | 亞歷克斯 | 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 | 姓名 | 地位 |
---|---|---|
1 | 喬治 | 1 |
2 | 約翰 | 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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.