在内部选择knex js计数

时间:2019-11-25 09:44:18

标签: mysql node.js knex.js

我有两组表,如下所示

用户表

|  id| name |
|----|------|
|  1 |  x   |
|  2 |  y   |
|  3 |  z   |

访问表

| event_id | user_id |
|----------|---------|
|     1    |  1      |
|     2    |  2      |
|     3    |  3      |
|     4    |  1      |
|     5    |  1      |
|     1    |  2      |

如何获取每个用户的访问次数以及用户名。 我知道原始SQL可以与knex一起使用,并且可以通过SQL查询轻松地做到这一点。我好奇地知道仅使用knex js是否可行。

await knex('visits').count().groupBy('user_id');

以上查询将为我提供每个用户的访问次数。如何在同一查询中获取用户名。

我正在寻找如下所示的输出

| user_id  | name | count |
|----------|------|-------|
|     1    |  x   |   3   |
|     2    |  y   |   2   |
|     3    |  z   |   1   |

1 个答案:

答案 0 :(得分:2)

尝试:

knex('visits')
  .select(['visits.user_id AS user_id', 'user.name'])
  .count('visits.user_id AS count')
  .leftJoin('user', 'user.id', 'visits.user_id')
  .groupBy(['visits.user_id', 'user.name']);