Py学习  »  DATABASE

对来自不同表的同一ID上的单独行进行计数:mysql

Wilf • 5 年前 • 1192 次点击  

我想计算同一台飞机和客户机的数量 usr_id . 以下是我的资源:

客户端数据库

+---------+--------+
| clnt_id | usr_id |
+---------+--------+
|    1    |   a1   |
+---------+--------+
|    2    |   a1   |
+---------+--------+
|    3    |   a2   |
+---------+--------+
|    4    |   a1   |
+---------+--------+

空调客户数据库

+---------+--------+---------+
|  ac_id  | usr_id | clnt_id |
+---------+--------+---------+
|    1    |   a1   |    1    |
+---------+--------+---------+
|    2    |   a2   |    2    |
+---------+--------+---------+
|    3    |   a2   |    1    |
+---------+--------+---------+
|    4    |   a2   |    3    |
+---------+--------+---------+

根据上表。我想数数

  1. 有多少 clnt_id 在同样的情况下 乌苏里德
  2. 有多少 ac_id 在同样的情况下 乌苏里德

所以我编码:

select count(acdb.ac_id) as nAC,
count(clnt.clnt_id) as nClnt 
from aircon_client_db acdb 
left join clients_db clnt on clnt.usr_sid=acdb.usr_sid 
where acdb.usr_sid='a1'

我希望答案如下:

但在我测试的时候。我的结果对两个计数都是一样的-4。我哪里做错了?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/34069
 
1192 次点击  
文章 [ 1 ]  |  最新文章 5 年前
forpas
Reply   •   1 楼
forpas    5 年前

你想数数:
clnt_id 从桌子上 clients_db
ac_id 从桌子上 aircon_client_db
对于 usr_sid='a1' 对吧?
我看不出有必要加入这些会议。
您可以在同一查询中使用两个子查询分别计数:

select 
  (select count(ac_id) from aircon_client_db where usr_sid = 'a1') as nAC,
  (select count(clnt_id) from clients_db where usr_sid = 'a1') as nClnt

如果有重复的情况 克朗特 S在 客户端数据库 或复制 阿克西 S在 空调客户数据库 然后使用:
count(distinct clnt_id) count(distinct ac_id)