mysql 连接并计算字段值

标签 mysql join

对于使用 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/

相关文章:

php - 使用 PHP 将数据从 MySQL 导入数组和表?

Mysql: n 列数为空

join - 修复连接具有相同变量的两个数据集

hadoop - hive 工作花费太多时间

mysql - 如何加快 MYSQL 更新速度?

mysql - ARCHFLAGS 不接受命令(Snow Leopard 上的 MySQL 64 位 ruby​​ gem 安装问题)

java - JDBC Connection对象在静态 block 执行后自动关闭以及如何模块化代码

mysql - 将一个表与另一个表中的多行联接

php - 具有 3 个 INNER JOIN 的 MYSQL 查询

Mysql通过表查询