对于使用 mysql 非常陌生,所以如果这个问题真的很初级,请原谅。如果有人至少能建议我应该研究什么主题,那就太好了。
我有 3 个表,用户、计算机、组件。 (这只是一个例子)。
user computer component
---- ------- ----
id id id
firstName user_id computer_id
lastName name componentName
type componentValue
一个用户可能拥有多台计算机,而这些计算机又可能拥有多个属性。
我正在尝试编写一个查询,该查询可以获取所有“Macintosh”计算机都包含具有“16GB”值的“ram”组件的所有用户 ID。
到目前为止,我正在努力正确计数,但已经写了这样的内容:
select user.id from user
inner join computer on user.id=computer.user_id and computer.name='Macintosh'
inner join component on computer.id=component.computer_id and component.componentName='ram'
having count(component.propertyName='ram')=count(component.propertyValue='16GB');
预先感谢您提供任何建设性的反馈。
最佳答案
您可以过滤 componentValue = '16GB'
select user.id
from user
inner join computer on user.id=computer.user_id and computer.name='Macintosh'
inner join component on computer.id=component.computer_id
and component.componentName='ram'
and component.componentValue = '16GB'
如果您只想使用只有 16GB 内存的计算机,您可以使用
select user.id
from user
inner join computer on user.id=computer.user_id and computer.name='Macintosh'
and computer.id not (
select component.computer_id
from component
where component.componentName='ram'
and component.componentValue <> '16GB')
关于mysql 连接并计算字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49076619/