Sql 使用多个选项查找相关记录
我不知道该如何命名这个问题。我试图解释我需要达到的目标 我将从我们的客户那里得到一份清单,其中列出了每台机器上安装的软件 示例 机器清单Sql 使用多个选项查找相关记录,sql,ms-access,Sql,Ms Access,我不知道该如何命名这个问题。我试图解释我需要达到的目标 我将从我们的客户那里得到一份清单,其中列出了每台机器上安装的软件 示例 机器清单 Hostname SW PC001 SW001 PC001 SW002 PC002 SW003 PC002 SW001 PC003 SW003 软件列表 SW Name Status SW001 not okay SW002 not okay SW003 ready 我需要一个SQL或M
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来查找所有主机名,这些主机名只安装了状态为OK的软件
另外,我需要一个逻辑来告诉我什么样的软件产品需要正常,才能在只安装了正常软件的情况下提供额外的主机名
目前,我正在努力回答这个问题
rgds
Sebastian目前我不确定如何选择一个主机名可以包含的多个行作为一个整体-因此如果我使用select语句,我会在安装指定产品的位置获取所有主机名-但其他安装的产品不会反映出来。我可以帮你一点忙,但你必须自己做些事情 首先,我先修改了你的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
)
--
--表机器的索引
--
--表软件的索引
--
--表机器的约束
这是您的查询,仅在状态为OK或ready时显示主机名
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');
所以这肯定会帮助你,但你必须独自做其他事情,只有当你找不到解决方案时,我们才会在这里帮助你 如果我没弄错的话,你所要做的就是进行sql查询,这些查询将为你提供相关的数据。写一些查询并展示给我们。你需要努力。
ALTER TABLE `software`
ADD PRIMARY KEY (`id_soft`);
ALTER TABLE `machines`
ADD CONSTRAINT `machines_ibfk_1` FOREIGN KEY (`id_soft`) REFERENCES
`software` (`id_soft`);
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');