MYSQL计数相关记录一个查询

use*_*853 13 mysql sql count

所以我有一个mysql查询,查询表"联系人"然后每个联系人购买.购买在相关表格中.我想显示每个联系人姓名和他们向右边做的购买次数,如下所示:

Adam(1)
Mike(8)
Steve(3) 
Run Code Online (Sandbox Code Playgroud)

我当前的sql看起来像这样:

SELECT * FROM contacts ORDER BY contacts.name ASC"
Run Code Online (Sandbox Code Playgroud)

我目前的表看起来像这样:

Adam
Mike
Steve
Run Code Online (Sandbox Code Playgroud)

为了将相关(购买)表的计数拉到当前表中我知道我必须加入"购买"表一些如何然后使用GROUP BY和count()函数但我不知道如何构造这个sql语句.有人能帮我吗.

我想要做的就是列出一个表(联系人)并计算它的相关记录(购买)并让它看起来像这样:

Adam(1)
Mike(8)
Steve(3)
Run Code Online (Sandbox Code Playgroud)

非常感谢你的帮助.

Asa*_*aph 26

假设该purchases表有一个contacts被调用的表的外键contact_id,那么这样的查询应该有效:

SELECT c.name, count(p.contact_id)
FROM contacts AS c
LEFT OUTER JOIN purchases AS p
ON p.contact_id = c.contact_id
GROUP BY c.contact_id
ORDER BY c.name ASC
Run Code Online (Sandbox Code Playgroud)

此查询会将计数放在单独的列中,我建议这样做.如果必须按照名称后用括号表示的方式对其进行格式化,则可以使用MySQL的concat()函数.像这样的东西:

SELECT concat(c.name, '(', count(p.contact_id), ')') AS Name_And_Count_Together
FROM contacts AS c
LEFT OUTER JOIN purchases AS p
ON p.contact_id = c.contact_id
GROUP BY c.contact_id
ORDER BY c.name ASC
Run Code Online (Sandbox Code Playgroud)