Ну, я мог бы вам немного помочь, но вы должны что-то сделать самостоятельно,
Итак, прежде всего я сначала изменил ваш код 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');
Так что это определенно поможет вам, но вы должны заниматься другими делами в одиночку, и только если вы не можете найти решение, мы будем здесь, чтобы помочь вам.