День добрый.
Подскажите пожалуйста, как бы сделать во так бы...
Есть БД Zabbix 3.4.0, которая крутится на PostgreSQL 9.2.15
Есть два запроса
select hostid, name from hosts where name like '1_MY_TEMPLATE%' order by name;
и
select itemid, name, key_, history, trends from items where hostid=<hostid_из_первого_запроса> order by name;
Как бы перебрать в цикле все hostid полученные первым запросом, последовательно подставляя их во второй?
На выходе хочется получить таблицу состоящую из результатов второго запроса по всем id-шникам первого.
PostgreSQL 9.2.15
10-ка на подходе, имеет смысл задуматься об обновлении, однако. Много чего хорошего включили, да и скорости серьёзно добавили.
select
i.itemid,
i.name,
i.key_,
i.history,
i.trends
from items i
inner join hosts h on i.hostid=h.hostid
where h.name like '1_MY_TEMPLATE%'
order by i.name;
Навскидку как-то так.
Updated: 01 September 2017, 13:24:06
sirarthur, у диггерза не юнион, у него классический джойн. А в юнионе оба запроса должны возвращать идентичные наборы полей.
А inner join hosts h on i.hostid=h.hostid
, при одинаковом наименовании поля вполне себе допустимо записать так:
inner join hosts h USING(hostid)
Ну и дока: https://postgrespro.ru/docs/postgrespro/9.6/queries-table-expressions.html
П. "7.2.1.1. Соединённые таблицы"
Вот так вот, все получилось вообще красиво и прям как надо.
select
h.name,
i.itemid,
i.name,
i.key_,
i.history,
i.trends
from items i
inner join hosts h on i.hostid=h.hostid
where h.name like '1_MY_TEMPLATE%'
order by i.name;
Всем спасибо, особенно shurutov!
Ну и дока: https://postgrespro.ru/docs/postgrespro/9.6/queries-table-expressions.html
П. "7.2.1.1. Соединённые таблицы"
Спасибо.
P.S. С join-ами я знаком немного, просто почему-то переклинило, что тут нужен цикл с передачей в него h.hostid как переменной.
А вот цикл я уже не осилил. :D