mysql - 从一个表中获取结果,按用户和日期分组,从另一个表中加入用户名和帐户信息?

标签 mysql join

假设我有三个表(每个表中都有列):

USERS: id, name, account_id

账户:id,姓名

事件:event_id、user_id、日期

我想从 EVENTS 中获取每个用户在某个日期范围内的事件总数,以及用户名和帐户名。

我可以使用 GROUP BY 按 user_id 对结果进行分组,但我如何将其加入用户和帐户以在每一行中获取该信息?我正在尝试获得如下输出:

+-------+---------------------+--------+

| name  | account_name        |count(*)|

+-------+---------------------+--------+

| Joe   | XYZ, Inc.           |     10 |

| Bob   | Vandalay Industries |     21 |

| Mary  | Account Name Here   |     32 |

+-------+---------------------+--------+

其中第三列是指定日期范围内该 user_id 在 EVENTS 表中的事件总数。

抱歉,我永远无法掌握这样的联接......

最佳答案

假设您在 usersaccounts 表上有一个 id

SELECT 
 users.name,
 accounts.name,
 count(events.event_id)
FROM
 users
 INNER JOIN events ON events.user_id = users.id
 INNER JOIN accounts ON accounts.id = users.account_id
WHERE
 events.date between <startdate> AND <enddate>
GROUP BY
 users.name,
 accounts.name

关于mysql - 从一个表中获取结果,按用户和日期分组,从另一个表中加入用户名和帐户信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3242268/

相关文章:

mysql - 我们如何将 AND & OR 运算符与简单连接一起使用?

php - 需要有关连接表的帮助

php - Laravel 如何做这个关系查询

php - 如何处理 PHP 中的 <option> 值以便在数据库中可读

php - Laravel 5.2 中未定义路由

MySQL - 根据具有相同 user_id 的其他行的列值按 user_id 选择行

mysql - 使用 TOP 将 SQL Server 转换为 MySQL 内连接错误

mysql - 加入不止一次?

php mysql forum app...如何制作粘性线程?

mysql - 如何使用 Terraform 管理数据库服务器