Mysql 如何获取与另一列相关的行数?

Mysql 如何获取与另一列相关的行数?,mysql,sql,select,join,Mysql,Sql,Select,Join,我有三张和下面一样的桌子 应用程序: +----+------+--------+ | id | name | author | +----+------+--------+ | 1 | App1 | 1 | | 2 | App2 | 1 | | 3 | App3 | 1 | +----+------+--------+ 安装: +-----+----+---------------------+ | app | id | timestamp

我有三张和下面一样的桌子

应用程序:

+----+------+--------+
| id | name | author |
+----+------+--------+
|  1 | App1 |      1 |
|  2 | App2 |      1 |
|  3 | App3 |      1 |
+----+------+--------+
安装:

+-----+----+---------------------+
| app | id | timestamp           |
+-----+----+---------------------+
|   3 |  1 | 2017-01-27 19:12:05 |
+-----+----+---------------------+
用户:

+----+----------+-------------------+--------------------------------------------------------------+
| id | username | email             | password                                                     |
+----+----------+-------------------+--------------------------------------------------------------+
|  2 | name     | email@address.com |                                                              |
+----+----------+-------------------+--------------------------------------------------------------+
每次有人安装应用程序时,都会将其添加到安装表中并加盖时间戳

我知道我可以通过以下方式获得个人应用程序的安装

SELECT a.name,COUNT(b.id) as installs FROM applications a,installs b WHERE a.id=3 AND b.app=3;
我会得到

+------+----------+
| name | installs |
+------+----------+
| App3 |    30000 |
+------+----------+
我想要的是能够从某个作者那里获得所有应用程序的名称以及应用程序的安装情况,结果集如下:

+------+----------+
| name | installs |
+------+----------+
| App1 |    10000 |
| App2 |    20000 |
| App3 |    30000 |
+------+----------+

使用
内部联接
而不使用过滤器

SELECT a.NAME,
       Count(*) AS installs
FROM   applications a
       JOIN installs i
         ON a.id = i.app 

这实际上是一个基本的
groupby
查询,带有
JOIN
WHERE

SELECT a.name, COUNT(i.id) as installs
FROM applications a LEFT JOIN
     installs i
     ON a.id = b.app
WHERE a.author = 1
GROUP BY a.name;
注:

  • 切勿在
    FROM
    子句中使用逗号。始终使用正确、明确的
    JOIN
    语法
  • 表别名应该是表名的缩写,而不是像
    b
    这样的随机字母
  • JOIN
    条件使用两个表中的列
  • LEFT JOIN
    为作者保留所有应用程序,即使没有安装

问得好,研究得差。