所以我有一个mysql查询,查询表“联系人”然后每个联系人购买。购买在相关表格中。我想显示每个联系人姓名和他们在右边做的购买次数,如下所示:
Adam(1)
Mike(8)
Steve(3)
我当前的sql看起来像这样:
SELECT * FROM contacts ORDER BY contacts.name ASC"
我当前的表格如下:
Adam
Mike
Steve
为了将相关(购买)表的计数拉入当前表,我知道我必须加入“购买”表一些如何然后使用GROUP BY和count()函数但我不知道如何构造这个sql语句。有人能帮我吗。
我想要做的就是列出一张桌子(联系人)并统计它的相关记录(购买)并让它看起来像这样:
Adam(1)
Mike(8)
Steve(3)
非常感谢您的帮助。
答案 0 :(得分:24)
假设purchases
表有一个名为contacts
的{{1}}表的外键,那么这样的查询应该有效:
contact_id
此查询会将计数放在单独的列中,我建议这样做。如果您必须按照您在名称后面的括号指示的方式对其进行格式化,则可以使用MySQL的concat()
函数。像这样:
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
答案 1 :(得分:1)
SELECT contacts.name, COUNT(*)
FROM contacts, purchases
WHERE contacts.name = purchases.name
GROUP BY purchases.key
ORDER BY contacts.name
将WHERE子句中的.name替换为用于标识记录的密钥。
答案 2 :(得分:0)
所需的查询将是这样的(我不知道您的架构):
SELECT c.name, count(p.id) FROM contacts c
JOIN purchases p ON (c.id = p.id)
GROUP BY p.id
ORDER BY contacts.name ASC