Mysql 计算相关外键出错

Mysql 计算相关外键出错,mysql,Mysql,我有以下表格:公司、设备、项目 项目表内容链接到具有外键的设备,设备链接到具有其他外键的公司 我想要的是: 对设备表中选定记录的链接项进行计数 以下查询获取设备列表: SELECT devices.device_id,devices.device_name FROM devices,company WHERE devices.for_id = (company.company_name='Sony') ORDER BY devices.device_name ASC 结果: id | dev

我有以下表格:公司、设备、项目

项目表内容链接到具有外键的设备,设备链接到具有其他外键的公司

我想要的是:

对设备表中选定记录的链接项进行计数

以下查询获取设备列表:

SELECT devices.device_id,devices.device_name
FROM devices,company
WHERE devices.for_id = (company.company_name='Sony') 
ORDER BY devices.device_name ASC
结果:

id | device
0  | Device 1 
1  | Device 2
device | count
Device 1 | 2
Device 2 | 7
Device | roms_count
Device 1 | 15
以下查询正确获取计数:

SELECT items.rom_name , COUNT(items.rom_name) AS 'count'
FROM items
WHERE items.device_for_id = 1
结果:

id | device
0  | Device 1 
1  | Device 2
device | count
Device 1 | 2
Device 2 | 7
Device | roms_count
Device 1 | 15
现在还可以,我想将它们合并在一起,因为我想将其作为json响应,所以我尝试了以下方法:

SELECT devices.device_name,devices.device_id,count(items.device_for_id) 
AS 'roms_count'
SFROM devices,company,items 
SWHERE devices.for_id=(company.company_name='".$_GET['company_name']."') 
SORDER BY devices.device_name ASC
结果:

id | device
0  | Device 1 
1  | Device 2
device | count
Device 1 | 2
Device 2 | 7
Device | roms_count
Device 1 | 15
这是我的问题,ROM计数不正确,它得到的是所有记录的总和,而且它只显示一个设备

项中的\u id的设备\u是外键

对此的正确查询是什么

更新:

公司(公司id、公司名称)

设备(设备id、设备名称,用于设备id(国外))


项目(设备标识(外来)、rom标识、rom名称)

您缺少
分组依据

SELECT devices.device_name,devices.device_id,count(items.device_for_id) AS 'roms_count'
FROM devices 
LEFT JOIN company ON company.company_id=devices.for_id
LEFT JOIN items ON devices.device_id=items.device_for_id
WHERE company.company_name='Sony' 
GROUP BY devices.device_name,devices.device_id
ORDER BY devices.device_name ASC

所有设备的“ROM_计数”现在都相同。您必须指定加入设备、公司和项目的列。如果需要更具体的答案,请显示表中的字段。如果我错了,请更正我,您希望数据库表结构正确吗*英语不是我的母语。是的,请不要告诉我细节。您可以只说,例如,设备(id、名称、型号)、公司(id、设备用于id、名称),等等。请检查更新后的OP.devices.for_id是否为FK用于公司?每个项目都链接到设备,每个设备都链接到公司,例如Windows 7(项目)链接到Asus T100(设备),该设备链接到Asus(公司)。否,项目中的设备\u for\u id是设备的外键,设备中的“for\u id”是公司的外键