繁体   English   中英

不同表中具有相同ID的SQL查询计数行

[英]SQL Query count row of same id in a different table

已经检查了其他答案,但不幸的是没有帮助我。 因此,我希望从不同的表格中计算出多少个相同的ID。 这是我的桌子的样子

在此处输入图片说明

左侧的第一个表格是“资源”,第二个表格是“ equipment_entity”。 所以我想计算一下与equipment_entity.id加入时有多少resource_class_id 到目前为止,这是我尝试过的方法,但是没有用。 任何帮助都可以。 链接相同的问题或任何帮助。 谢谢你!

SELECT e.*, r.equipment_class_id, r.resource_type FROM equipment_entity as e LEFT JOIN resources as r ON e.id = r.equipment_class_id COUNT(DISTINCT r.equipment_class_id) where r.resource_type = 'equipment'

而且,我有这个错误

1064-您的SQL语法有误; 检查与您的MariaDB服务器版本相对应的手册以获取正确的语法,以在第1行的“ COUNT(DISTINCT r.equipment_class_id)”附近使用,其中r.resource_type ='equipment'LIMIT 0'

尝试以下查询。 这将为您提供equipment_entity表中的所有行以及资源表中每个设备的行数。

SELECT e.*, count(*) AS count FROM `equipment_entity` AS e left join `resources` AS r ON e.id = r.equipment_class_id GROUP BY e.id

有两种选择。 您已经确定要知道r.resource_type ='equipment'的计数,那么第一个查询将为您服务。

SELECT COUNT(DISTINCT r.equipment_class_id)
FROM equipment_entity AS e
     LEFT JOIN resources AS r ON e.id = r.equipment_class_id
WHERE r.resource_type = 'equipment';

但是,如果您想一次查看所有resource_type的计数,则可以按以下方式使用GROUP BY获得所需的结果。

SELECT r.equipment_class_id,
COUNT(DISTINCT r.equipment_class_id)
FROM equipment_entity AS e
     LEFT JOIN resources AS r ON e.id = r.equipment_class_id
GROUP BY r.equipment_class_id;

用这个

SELECT r.equipment_class_id, r.resource_type, count(r.equipment_class_id) count 
FROM equipment_entity as e LEFT JOIN resources as r 
ON e.id = r.equipment_class_id  where r.resource_type = 'equipment' GROUP BY equipment_class_id

所以我想算一下与equipment_entity.id一起加入时有多少resource_class_id

我不太明白这意味着什么。 以下是两种解释。

根据您的数据模型,表resources似乎至少具有两列idresource_class equipment_entity似乎具有resource_class_id 我已调整此答案以反映这些名称。

如果要计算具有特定资源类型的设备的数量,则只需使用JOINCOUNT ():

SELECT COUNT(*)
FROM equipment_entity  e JOIN
     resources r
     ON r.id = e.resource_class_id
WHERE r.resource_class = 'equipment';

不需要COUNT(DISTINCT)LEFT JOIN

如果要计算所有资源类,则:

SELECT r.resource_class, COUNT(e.id)
FROM resources r JOIN
     equipment_entity e
     ON r.id = e.resource_class_id
GROUP BY r.resource_class;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM