不同表中相同id的SQL查询计数行

不同表中相同id的SQL查询计数行,sql,phpmyadmin,mariadb,Sql,Phpmyadmin,Mariadb,已经检查了其他答案,但不幸的是没有帮助我。所以我希望能数一数有多少相同的id来自不同的表。这就是我的桌子的样子 左侧第一个表格为“资源”,第二个表格为“设备实体”。因此,我想计算与设备\u实体.id连接时,有多少资源\u类\u id。这是我到目前为止尝试过的,但不起作用。任何帮助都可以。链接到相同的问题或任何帮助。谢谢你 SELECT e.*, r.equipment_class_id, r.resource_type FROM equipment_entity as e LEFT JOIN

已经检查了其他答案,但不幸的是没有帮助我。所以我希望能数一数有多少相同的id来自不同的表。这就是我的桌子的样子

左侧第一个表格为“资源”,第二个表格为“设备实体”。因此,我想计算与
设备\u实体.id
连接时,有多少
资源\u类\u 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服务器版本对应的手册,以了解要使用的正确语法 “近”计数(不同的r.equipment\u class\u id),其中r.resource\u类型= 第1行的“设备”限制为0


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

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
用这个

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

有两种选择。如果您决定要知道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';
但是,如果您想一次性查看所有资源类型的计数,您可以使用下面的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;

所以我想计算一下,当加入设备实体id时,有多少资源类id

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

根据您的数据模型,表
resources
似乎至少有两列
id
resource\u class
。表
设备\u实体
似乎具有
资源\u类\u id
。我已经调整了这个答案以反映这些名字

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

不需要
COUNT(DISTINCT)
左连接

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

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;

您能帮我摆弄一下您的数据样本,让我(或其他人)玩一下吗?@hd1好的,先生,请稍等片刻,试试这个,先生@hd1现在更新您的问题,以显示您想要得到什么?“所以我想计算一下,当与设备\u entity.id连接时,有多少资源\u class\u id”。我不太明白这意味着什么。此外,示例数据具有
resource\u class
,但您的查询引用了
resource\u type
。令人困惑。哦。。。摘自您发布的查询:)搜索“设备类id”列是否实际存在于表“资源”中!!它实际上是一个资源类id。当我尝试它时,确实改变了它,但没有得到我想要的结果。但还是非常感谢!@user1309690的查询是im的结果expecting@Anthony.Jay你能接受正确的答案吗。谢谢
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;