带连接的SQL计数

时间:2015-08-29 03:38:43

标签: sql join count

总新手。再试一次。

2表Biz和Users

商家有IdNum,created_at,account_type,business_name 用户具有IdNum,country,first_name,last_name

问题:来自日本的企业总数是多少?

我知道我需要使用内连接。

3 个答案:

答案 0 :(得分:0)

如果您想要来自加拿大的所有商家的总数(假设您可以从用户的ID字段加入商务中的ID字段),则只计算每个不同的商家一次 -

select count(distinct u.country) --will only count unique entries once
from Biz b
inner join Users u 
on b.ID = u.ID
where u.country = 'Japan'

如果您想要所有行的计数,而不是唯一的行 -

select count(u.country) --will count all entries
from Biz b
inner join Users u 
on b.ID = u.ID
where u.country = 'Japan'

答案 1 :(得分:0)

我做了一些假设并创建了这个例子。

首先,我创建了两个表,db_users和db_partners 插入一些样本数据。我假设"用户"是 "合作伙伴"的销售经理而且每个伙伴 被分配了一个用户。用户可以有多个合作伙伴。 很奇怪"国家"是用户和的属性 不是合作伙伴,但这就是我解释这个例子的方式。

MariaDB [test_time]> create table db_users ( 
  UserID int unsigned not null auto_increment primary key,
  UserName varchar(20),
  Country varchar(8) 
);

MariaDB [test_time]> create table db_partners ( 
  PartnerID int unsigned not null auto_increment primary key,
  PartnerName varchar(20),
  Created datetime,
  Size int unsigned,
  UserID int unsigned
);

MariaDB [test_time]> insert into db_users
  (UserName,Country) 
values 
  ('Abel','CA'),
  ('Baker','CA'),
  ('Charlie','JP'),
  ('Donald','JP'),
  ('Edgar','JP')
;

MariaDB [test_time]> insert into db_partners 
  (PartnerName,Created,Size,UserID) 
values 
  ('Kraft',now(),45,1),
  ('Ford',now(),66,2),
  ('Hortons',now(),22,1),
  ('Kroger',now(),15,4)
;

然后我选择了关联用户在CA中的合作伙伴:

MariaDB [test_time]> select 
  UserName,PartnerName 
from 
  db_users join db_partners using (UserID) 
where 
  Country='CA'
;
+----------+-------------+
| UserName | PartnerName |
+----------+-------------+
| Abel     | Kraft       |
| Abel     | Hortons     |
| Baker    | Ford        |
+----------+-------------+
3 rows in set (0.00 sec)

MariaDB [test_time]> select 
  count(Country) 
from 
  db_users join db_partners using (UserID) 
where 
  Country='CA'
;
+----------------+
| count(Country) |
+----------------+
|              3 |
+----------------+
1 row in set (0.00 sec)

我不确定这是你想要的。如果没有,请澄清你的 问题

答案 2 :(得分:0)

如果IdNum是您的外键(表之间的连接条件),请使用

SELECT count(*)
FROM Business, Users
WHERE Business.IdNum = Users.IdNum
AND  Business.country = 'Japan';