mysql - 查询比较多个值

标签 mysql sql

我从 SQL 开始,遇到了一些我不知道的事情。 我有一个包含事件的数据库(例如某些桌面发生的问题的描述)以及包含已安装软件和桌面硬件的其他表格。

我正在尝试创建一个 SQL 查询,该查询将仅显示安装了常用软件的工作站上的事件。就像我有 10 次服务器重置事件一样,我想知道这些服务器中有多少安装了相同的软件。

目前我有这个:

-- Query to find out how many times each omschriving (description) occurs
-- and to show only those that occur more than one time
SELECT incidents.omschrijving, COUNT(omschrijving) AS Aantal
  FROM hondsrug_db.incidents incidents
WHERE   (hardware.hardwareID = installed_software.hardwareID)
   AND (incidents.hardwareID = hardware.hardwareID)
GROUP BY incidents.omschrijving
HAVING COUNT(omschrijving) > 1
ORDER BY Aantal DESC

如本 ERD 所示 http://nl.tinypic.com/view.php?pic=oayr9i&s=8#.U4ibbfl_sbg表installed_software 由 2 个外键组成。这是因为一个硬件组件可以安装多个软件组件。对于该表来说,这意味着硬件ID 可以在installed_software 表中出现多次,但每次都会出现另一个软件ID。 现在我想知道,如果有 10 个服务器事件,您如何找到有多少服务器拥有相同的软件集?

提前致谢

最佳答案

以下查询连接 incidentsinstalled_softwaresoftware 表。

对于每个事件,都会从 installed_software 表中查找服务器 (hardwareID) 和软件 (softwareID)。软件名称 (naam) 从 software 表中查找。

SELECT software.softwareID, software.naam, count(installed_software.hardwareID)
FROM hondsrug_db.incidents incidents
INNER JOIN  hondsrug_db.installed_software installed_software
ON incidents.hardwareID = hardwareID
INNER JOIN hondsrug_db.software software
ON installed_software.softwareID = software.softwareID
GROUP BY installed_software.softwareID;

关于mysql - 查询比较多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23957566/

相关文章:

sql - 使用Intellisense开发MySQL存储过程?

sql - 从两个子查询中选择,在另一列上加入

sql - 是否可以使用 SQL 通过表达式引擎表达式创建索引?

php - MYSQLi 日期格式 - 选择查询

MySQL - JOIN 条件和性能问题

php - 查找多对多关系中的重复项

mysql - 将国家分组并计数

mysql - 是否有可能知道导致UPDATE“WHERE”语句不进行第二次查询就不会更新的原因?

php - 类似对话的消息系统

sql - MySQL 中的 NULL(性能和存储)