MySQL从两个相关表中获取计数

时间:2014-08-12 07:16:12

标签: mysql

我正在使用MySQL和数据库服务器,我有两个表,一个用于客户,另一个表用于 customer_contacts 。 以下是表格结构:

customer(
    id(pk, ai)
    name
    email
)

customer_contacts(
    id(ai)
    customer_id
    first_name
    last_name
)

现在我的问题是:
假设我有一个客户有很多像这样的customer_contacts

customer

 id    name     email
 1     john     john@example.com

和customer_contacts是这样的(第一行)

 id    customer_id  first_name   last_name
 1     1            john         doe
 2     1            johnp        pual
像这样

所以在这里我想得到id john的所有联系方式。有人可以告诉我如何得到它吗?  
任何帮助和建议都会非常明显。
感谢

3 个答案:

答案 0 :(得分:0)

只需加入两个表,然后使用count() group by c.id使用where过滤记录

select c.*,
count(*) total_contacts
from customer  c
left join customer_contacts  cc on(c.id = cc.customer_id)
group by c.id

Fiddle Demo

答案 1 :(得分:0)

如果id已经知道(正如问题所示,它将是一个简单的

SELECT COUNT(*) from customer_contacts
    WHERE customer_contacts.id = 1;

答案 2 :(得分:0)

您只需知道客户John的联系人数量,对吗?

SELECT COUNT(*) 
FROM customer cus INNER JOIN customer_contacts con ON cus.id = con.customer_id
WHERE cus.name = 'john'

然而,如果你知道约翰的身份会更好。您的查询将是:

SELECT COUNT(*) 
FROM customer_contacts
WHERE customer_id = 1