我不确定如何命名这个问题。我试着解释我需要达到的目标。
我将从我们的客户那里获得一份列表,其中列出了每台机器上安装的软件。
示例_ 机器清单
Hostname SW
PC001 SW001
PC001 SW002
PC002 SW003
PC002 SW001
PC003 SW003
软件列表
SW Name Status
SW001 not okay
SW002 not okay
SW003 ready
我需要一个SQL或MS-Access logik才能找到所有只安装了状态好的SW的主机名
和 - 在adition中 - 我需要一个逻辑来告诉我什么样的软件产品需要可以在安装好软件的情况下使其他主机名可用。
目前我正在努力解决这个问题
RGDS 塞巴斯蒂安
答案 0 :(得分:0)
我可以帮助你一点,但你必须自己做点什么,
首先,我首先修改了你的DDL代码
CREATE TABLE `machines` (
`id` int(11) NOT NULL,
`hostnames` varchar(20) NOT NULL,
`id_soft` int(11) NOT NULL
)
CREATE TABLE `software` (
`id_soft` int(11) NOT NULL,
`software_name` varchar(20) NOT NULL,
`status` varchar(20) NOT NULL
)
-
machines
ALTER TABLE `machines`
ADD PRIMARY KEY (`id`),
ADD KEY `id_soft` (`id_soft`);
-
software
ALTER TABLE `software`
ADD PRIMARY KEY (`id_soft`);
-
machines
ALTER TABLE `machines`
ADD CONSTRAINT `machines_ibfk_1` FOREIGN KEY (`id_soft`) REFERENCES
`software` (`id_soft`);
这是您的查询,只显示状态为okey或准备就绪的主机名!
SELECT hostnames
FROM machines
LEFT JOIN software on machines.id_soft = software.id_soft
WHERE machines.id_soft = (SELECT software.id_soft from software
WHERE software.status like 'ready');
所以这肯定会对你有所帮助,但你必须独自完成其他事情,只有你找不到解决方案,我们才会在这里为你提供帮助。