MySQL 3 表连接,一个表中的计数和另一个表中的最大时间戳

史蒂夫

我有 3 个表,其中包含如下示例数据。我正在尝试获取有关代理名称、代理的客户数量以及代理上次登录的报告。如果代理没有客户,他将不会有任何记录(但可能有最后一次登录日期)。相反,代理可能有客户,但从未登录。

table agents
|    id  |   first   |   last    |
----------------------------------------
|    1   |   dave    | schultz   |
|    2   |   bobby   | clarke    |
|    3   |   ed      | hospidar  | 
|    4   |   derek   | smith     |

table agentclients
|   id   |   agentid   |   clientid    |
----------------------------------------
|    1   |   2         | 345           |
|    2   |   3         | 347           |
|    3   |   3         | 221           | 
|    4   |   1         | 567           |

table loginhistory
|   id   |   userid   |   usertype    |   ts 
-------------------------------------------------------
|    1   |   2        | A    |  2018-11-17 14:16:44   |
|    2   |   3        | A    |  2018-11-24 20:46:16   |
|    3   |   4        | A    |  2018-11-27 13:07:58   |
|    4   |   1        | A    |  2019-01-05 13:45:01   |
|    5   |   4        | A    |  2019-01-19 06:36:23   |
|    6   |   3        | A    |  2019-01-24 02:13:44   |

Results:
agent id | agent name     | clients |  last login
------------------------------------------------------- 
1    | dave schultz   |    1    |  2019-01-05 13:45:01
2    | bobby clark    |    1    |  2018-11-17 14:16:44
3    | ed hospidar    |    2    |  2019-01-24 02:13:44
4    | derek smith    |    0    |  2018-11-27 13:07:58

我似乎可以得到计数或最大登录次数,但是如果我尝试加入所有 3 个,则计数不正确。

SELECT a.id, a.first, a.last, count(ac.clientid) as 'client count'
  FROM agents a
LEFT JOIN agentclients ac on a.id = ac.agentid
WHERE a.agentdeleted = 0
GROUP BY ac.agentid;

适用于计数客户

如果我尝试添加 max() 计数中断:

SELECT a.id, a.first, a.last, count(ac.clientid) as 'client count',
       max(l.ts) AS 'lastlogin'
  FROM agents a
LEFT JOIN agentclients ac on a.id = ac.agentid
LEFT JOIN loginhistory l on l.userid = a.aid and l.usertype = 'A'
WHERE a.agentdeleted = 0
GROUP BY ac.agentid;
马克西姆·费多罗夫

您应该计算agentclients表中代理的唯一记录数量您可以在列的帮助DISCTINCT下完成agentclients.id

SELECT a.id, 
       a.first, 
       a.last, 
       COUNT( DISTINCT ac.id) as 'client count',
       max(l.ts) AS 'lastlogin'
FROM agents a
LEFT JOIN agentclients ac on a.id = ac.agentid
LEFT JOIN loginhistory l on l.userid = a.aid and l.usertype = 'A'
WHERE a.agentdeleted = 0
GROUP BY ac.agentid;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MYSQL:将3个表中的数据混合并与另一个表进行JOIN

来自分类Dev

在连接3个表的mysql表中查找最后一个帖子的用户名

来自分类Dev

MYSQL:将3个表中的数据混合在一起,并与另一个表进行JOIN

来自分类Dev

Mysql 左连接 3 个表和一个被连接两次

来自分类Dev

当用户在另一个表中创建1条记录时,mysql自动在表中创建3条记录

来自分类Dev

MySQL-连接和计算另一个表中的行

来自分类Dev

在联接3个表的mysql表中查找最后一个帖子的用户名

来自分类Dev

MySQL联接3个表并在一个表中查找“丢失”的行

来自分类Dev

从 Mysql 中另一个表中的列中订购一个表

来自分类Dev

在 MySQL 中如何使用基于另一个表的列值的名称连接表?

来自分类Dev

如何将一个表中的最新行连接到另一个表MYSQL

来自分类Dev

在MySQL中验证从一个表到另一个表的字段

来自分类Dev

MySQL在一个表中列出,在另一个表中排序

来自分类Dev

mysql更新另一个表中的列

来自分类Dev

MySQL查询与另一个表上的计数

来自分类Dev

MySQL将子表和父表连接到同一表中,然后再将其与另一个表连接

来自分类Dev

MySQL子查询来计数用户在另一个表中的结果是sloooooooow

来自分类Dev

在MySQL中计数两个表,并根据另一个表中的日期显示结果

来自分类Dev

在MySQL中计数两个表,并根据另一个表中的日期显示结果

来自分类Dev

MySQL创建一个视图,其中包含3个表中的2个表的所有行组合?

来自分类Dev

MySQL-使用一个查询从3个表中搜索

来自分类Dev

mySQL更新列与另一个表的连接

来自分类Dev

如何从一个表中获取价值和另一个值的阵列中的一个MySQL查询联接表?

来自分类Dev

mysql 连接排除另一个表中的匹配记录

来自分类Dev

PHP / MySQL从3个不同的表中选择数据并将结果显示在一个表中

来自分类Dev

MySQL的检查每一个表中存在的项目,在另一个存在

来自分类Dev

如何将另一个表中的值插入到表中 - mysql 内连接

来自分类Dev

mysql将2个表插入另一个表中,使用JOIN

来自分类Dev

根据mysql中另一个表中的值更新一个表中的列

Related 相关文章

  1. 1

    MYSQL:将3个表中的数据混合并与另一个表进行JOIN

  2. 2

    在连接3个表的mysql表中查找最后一个帖子的用户名

  3. 3

    MYSQL:将3个表中的数据混合在一起,并与另一个表进行JOIN

  4. 4

    Mysql 左连接 3 个表和一个被连接两次

  5. 5

    当用户在另一个表中创建1条记录时,mysql自动在表中创建3条记录

  6. 6

    MySQL-连接和计算另一个表中的行

  7. 7

    在联接3个表的mysql表中查找最后一个帖子的用户名

  8. 8

    MySQL联接3个表并在一个表中查找“丢失”的行

  9. 9

    从 Mysql 中另一个表中的列中订购一个表

  10. 10

    在 MySQL 中如何使用基于另一个表的列值的名称连接表?

  11. 11

    如何将一个表中的最新行连接到另一个表MYSQL

  12. 12

    在MySQL中验证从一个表到另一个表的字段

  13. 13

    MySQL在一个表中列出,在另一个表中排序

  14. 14

    mysql更新另一个表中的列

  15. 15

    MySQL查询与另一个表上的计数

  16. 16

    MySQL将子表和父表连接到同一表中,然后再将其与另一个表连接

  17. 17

    MySQL子查询来计数用户在另一个表中的结果是sloooooooow

  18. 18

    在MySQL中计数两个表,并根据另一个表中的日期显示结果

  19. 19

    在MySQL中计数两个表,并根据另一个表中的日期显示结果

  20. 20

    MySQL创建一个视图,其中包含3个表中的2个表的所有行组合?

  21. 21

    MySQL-使用一个查询从3个表中搜索

  22. 22

    mySQL更新列与另一个表的连接

  23. 23

    如何从一个表中获取价值和另一个值的阵列中的一个MySQL查询联接表?

  24. 24

    mysql 连接排除另一个表中的匹配记录

  25. 25

    PHP / MySQL从3个不同的表中选择数据并将结果显示在一个表中

  26. 26

    MySQL的检查每一个表中存在的项目,在另一个存在

  27. 27

    如何将另一个表中的值插入到表中 - mysql 内连接

  28. 28

    mysql将2个表插入另一个表中,使用JOIN

  29. 29

    根据mysql中另一个表中的值更新一个表中的列

热门标签

归档