我从 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 个服务器事件,您如何找到有多少服务器拥有相同的软件集?
提前致谢
最佳答案
以下查询连接 incidents
、installed_software
和 software
表。
对于每个事件,都会从 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/