mysql - 一次从 2 个 mysql 表中获取信息
问题描述
所以我是 MYSQL 的新手,遇到了一个重大问题(至少对我来说)我有 2 个表 cwd_user 和 cwd_membership 我想从我的数据库中获取自 2020 年 8 月 31 日以来未登录的所有用户以及特定群体的一部分。
我想出的第一个查询是这样的:
SELECT u.user_name as "Username"
, u.display_name as "Full Name"
, to_timestamp(CAST(a.attribute_value as bigint)/1000) as "Last Login"
FROM cwd_user u
LEFT
JOIN cwd_user_attributes a
ON u.id = a.user_id
AND attribute_name = 'login.lastLoginMillis'
WHERE a.attribute_value >= '1598824800000'
OR a.attribute_value IS NULL
ORDER
BY a.attribute_value;
我怎样才能同时从第二个表中获取信息?
表格如下所示:
cwd_membership:
id | parent_name | child_name
1 | finance | tomi
2 | hr | stro
3 | hr | sujo
cwd_user:
id | user_name | display_name |I dunno which fields the query I found only gets the "Last Login" from
1 | tomi | Todd Miller |?
2 | stro | Steve Rogers |?
3 | sujo | Susan Jones |?
查询给了我用户名,例如。tomi 和 stro 他们的全名和他们最后一次登录的时间是这样的:
Username | Full Name | Last Login
tomi | Tdd Miller | July 1st 2020
stro | Steve Rogers| June 1st 2020
sujo | Susan Jones | April 1st
不过,我希望显示的只是那些属于“hr”组的人,而不是其他人。
我希望我能表达我的观点,有人可以帮助我。
解决方案
与加入查询的方式大致相同cwd_attributes
,您也可以加入,cwd_membership
然后检查加入的数据是否符合您的条件。
您的查询带有额外的JOIN
:
SELECT u.user_name as "Username"
, u.display_name as "Full Name"
, to_timestamp(CAST(a.attribute_value as bigint)/1000) as "Last Login"
FROM cwd_user u
INNER JOIN cwd_membership m
ON m.child_name=u.user_name
AND m.parent_name='hr'
LEFT JOIN cwd_user_attributes a
ON u.id = a.user_id
AND attribute_name = 'login.lastLoginMillis'
WHERE
a.attribute_value >= '1598824800000' OR a.attribute_value IS NULL
ORDER
BY a.attribute_value;