Найти соответствующие записи с несколькими вариантами - PullRequest
0 голосов
/ 10 мая 2018

Я не был уверен, как я должен назвать Вопрос.Я пытаюсь объяснить, чего мне нужно достичь.

Я получу от нашего Заказчика список, в котором будет указано установленное программное обеспечение на каждой машине.

Example_ Список машин

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, чтобы найти все имена хостов, на которых установлен только SW с Status ok

и - в дополнение - мне нужна логика, чтобы сказать мне, какой тип программного продукта должен быть в порядке, чтобы сделать доступными дополнительные имена хостов, если установлено только нормальное программное обеспечение.

В данный момент я борюсь с этимвопрос

ргдс Себастьян

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Ну, я мог бы вам немного помочь, но вы должны что-то сделать самостоятельно,

Итак, прежде всего я сначала изменил ваш код 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`);

, и вот ваш запрос для отображения имен хостов только там, где статус в порядке или готов!

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');

Так что это определенно поможет вам, но вы должны заниматься другими делами в одиночку, и только если вы не можете найти решение, мы будем здесь, чтобы помочь вам.

0 голосов
/ 10 мая 2018

В настоящее время я не уверен, как выбрать несколько строк, которые одно имя хоста могло бы иметь как целое - поэтому, если я использую оператор выбора, я получаю все имя хоста, на котором установлен указанный продукт - но другие установленные продукты не отражаются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...