尝试在3个表格中创建报告 - 公司,帐户,用户。对于每个公司,帐户中都有一个ID。每个用户都有一个帐户。我可以轻松地获得总数,但我需要添加总数中注册用户数的计数(用户名不为空)。
SELECT c.c_name, c.c_groupnumber, count(a.a_userid) AS TotalCount
FROM company c
LEFT JOIN account a ON c.c_groupnumber = a.a_groupnumber
WHERE a.a_deleted IS NULL
GROUP BY c.c_groupnumber
HAVING TotalCount > 0;
如何在保持我的TotalCount的同时添加一个条件,让我计算user.u_username不为空?帐户和用户之间的链接是
a.a_userid = user.u_userid
tbl.company
c_id, c_groupnumber, c_name
1 1234 widgets, inc.
2 5678 joe's garage
tbl.user
u_userid, u_username, u_name
1 bill Bill Smith
2 frank Frank Johnson
3 NULL Jane Doe
4 mary Mary Stack
5 NULL Steve Spot
tbl.account
a_id, a_userid, a_groupnumber
100 1 1234
101 2 5678
102 3 5678
103 4 1234
104 5 1234
所以使用上面非常简化的表格示例,公司“Widget's Inc.”有3名员工(账单史密斯,玛丽堆栈和史蒂夫点),其中3 2人已注册(账单和玛丽),而史蒂夫没有(用户名为空)。
乔的车库有两名员工 - 弗兰克和简,弗兰克已注册,而简没有。我想生成类似这样的报告:
Group Company Total Emp Reg Emp
1234 Widgets Inc 3 2
5678 Joe's Garag 2 1
希望这会使问题更清楚?
答案 0 :(得分:0)
如果您获得了用户名,然后使用
执行JOIN
,该怎么办?
SELECT c.c_name, c.c_groupnumber, count(a.a_userid) AS TotalCount,
xxx.username_count
FROM company c
LEFT JOIN account a ON c.c_groupnumber = a.a_groupnumber
LEFT JOIN ( select u_userid, count(u_username) username_count
from `user`
group by u_userid ) xxx ON a.a_userid = xxx.u_userid
WHERE a.a_deleted IS NULL
GROUP BY c.c_groupnumber
HAVING TotalCount > 0;