select count(1), t.ttName from (
select tmp.*, sys_dept.name as ttName from
(SELECT
sys_login_org.dept_id,
sys_login_log.usr_id,
sys_login_log.usr_name,
sys_login_log.work_no,
sys_login_log.sys_id,
sys_dept.id,
sys_dept.`name`,
sys_dept.path
FROM
sys_login_log,
sys_login_org,
sys_dept
WHERE
sys_login_log.id = sys_login_org.login_id
AND sys_dept.id = sys_login_org.dept_id) tmp
left join sys_dept on FIND_IN_SET(sys_dept.id,REPLACE(tmp.path,'/',','))
) t
group by t.ttName
-- where tmp.work_no = '-1'
;
SELECT
sys_login_log.id as logid,
sys_login_org.dept_id,
sys_login_log.usr_id,
sys_login_log.usr_name,
sys_login_log.work_no,
sys_login_log.sys_id,
-- sys_dept.id,
sys_dept.`name`,
sys_dept.path
FROM
sys_login_log,
sys_login_org,
sys_dept
WHERE
sys_login_log.id = sys_login_org.login_id
AND sys_dept.id = sys_login_org.dept_id
and sys_login_log.usr_id = 817441901144702976
order by sys_login_log.id,sys_login_org.dept_id
;
select tmp.*, sys_dept.name as ttName, sys_dept.id deptID from (SELECT
sys_login_log.id as logid,
sys_login_org.dept_id,
sys_login_log.usr_id,
sys_login_log.usr_name,
sys_login_log.work_no,
sys_login_log.sys_id,
-- sys_dept.id,
sys_dept.`name`,
sys_dept.path
FROM
sys_login_log,
sys_login_org,
sys_dept
WHERE
sys_login_log.id = sys_login_org.login_id
AND sys_dept.id = sys_login_org.dept_id
and sys_login_log.usr_id = 817441901144702976) tmp
left join sys_dept on FIND_IN_SET(sys_dept.id,REPLACE(tmp.path,'/',','))
order by tmp.logid,deptID;
select count(1), count(distinct b.usr_id) as access_person,dept_id, name from (
select l.id, l.usr_id, l.work_no, dd.name, dd.path,dd.id as dept_id,l.sys_id from sys_login_log l left join (
select GROUP_CONCAT(d.path SEPARATOR '/' ) as path, o.login_id from sys_login_org o, sys_dept d where o.dept_id = d.id
GROUP BY o.login_id
) a on l.id = a.login_id
left join sys_dept dd on FIND_IN_SET(dd.id,REPLACE(a.path,'/',','))
-- order by l.id, dept_id
) b
group by dept_id, name;
select l.id, l.usr_id, l.work_no, dd.name, dd.path,dd.id as dept_id,l.sys_id from sys_login_log l left join (
select GROUP_CONCAT(d.path SEPARATOR '/' ) as path, o.login_id from sys_login_org o, sys_dept d where o.dept_id = d.id
GROUP BY o.login_id
) a on l.id = a.login_id
left join sys_dept dd on FIND_IN_SET(dd.id,REPLACE(a.path,'/',','))
where dd.id = 1;
-- dept person amount
select
-- a.path, a.user_id,
count(1),
dd.id, dd.name from sys_dept dd INNER JOIN (
select u.user_id, GROUP_CONCAT(d.path SEPARATOR '/') as path from sys_dept_users u,sys_dept d where u.dept_id = d.id GROUP BY u.user_id) a on
FIND_IN_SET(dd.id,REPLACE(a.path,'/',','))
GROUP BY dd.id, dd.name
;
select count(1) as access_amount, count(distinct b.usr_id) as access_person,dept_id, name, ttt.total_person from (
select l.id, l.usr_id, l.work_no, dd.name, dd.path,dd.id as dept_id,l.sys_id from sys_login_log l left join (
select GROUP_CONCAT(d.path SEPARATOR '/' ) as path, o.login_id from sys_login_org o, sys_dept d where o.dept_id = d.id
GROUP BY o.login_id
) a on l.id = a.login_id
left join sys_dept dd on FIND_IN_SET(dd.id,REPLACE(a.path,'/',','))
) b INNER JOIN (
select
count(1) as total_person,
dd.id from sys_dept dd INNER JOIN (
select u.user_id, GROUP_CONCAT(d.path SEPARATOR '/') as path from sys_dept_users u,sys_dept d where u.dept_id = d.id GROUP BY u.user_id) a on
FIND_IN_SET(dd.id,REPLACE(a.path,'/',','))
GROUP BY dd.id) ttt on b.dept_id = ttt.id
group by dept_id, name;