Należy zrezygnować z używania sprzężeń niejawnych (oddzielonych przecinkami) na rzecz sprzężeń jawnych. W Twoim przypadku odpowiednie są połączenia LEWE (zewnętrzne).
DROP TABLE IF EXISTS Hosts;DROP TABLE IF EXISTS Items;DROP TABLE IF EXISTS History_uint;DROP TABLE IF EXISTS History_uint;DROP TABLE IF EXISTS History_log;CREATE TABLE Hosts(host VARCHAR(20), hostid INT); CREATE TABLE Items (hostid INT, itemid INT, nazwa VARCHAR(20));CREATE TABLE History_uint(itemid INT, wartość INT);CREATE TABLE History_log(itemid INT, wartość INT);INSERT INTO HOSTS VALUES ('HOST1',1) ,('HOST2',2);WSTAW WARTOŚCI ELEMENTÓW(1,1,'RP_Dayend_OK'),(1,2,'RP_Sync_OK'),(1,3,'RP_Monthend_OK'),(1,4,'RP_Version ' ),(2,1,'RP_Dayend_OK'),(2,2,'RP_Sync_OK'),(2,2,'RP_cron');WSTAW W HISTORII_uint WARTOŚCI (1,10),(2,10),( 3,10),(4,10),(1,50,(3,60));WSTAW DO HISTORII_WARTOŚCI dziennika(1,10),(2,10),(3,10),(4,10);SELECT hosts.host, max(((przypadek, gdy items.name='RP_Dayend_OK' then history_uint.value end) *1000) as 'Day End', max(((przypadek, gdy items.name='RP_Sync_OK' then history_uint.value end) ) *1000) jako 'Sync',max(((przypadek, gdy items.name='RP_Monthend_OK', a następnie history_uint.value end) *1 000) jako 'Koniec miesiąca', max(przypadek, gdy items.name='RP_Version', a następnie history_uint.value koniec) jako 'Wersja',max(przypadek, gdy items.name='RP_Cron', a następnie history_log.value koniec) jako 'cron 'z hostsleft dołącz do elementów na items.hostid =hosts.hostidleft dołącz do history_uint na history_uint.itemid =items.itemidleft dołącz do history_log na history_log.itemid =items.itemidwhere items.name jak '%RP\_%'grupuj według hosts.host; +-------+---------+-------+-----------+---------+- -----+| gospodarz | Koniec dnia | Synchronizuj | Koniec miesiąca | Wersja | cron |+-------+---------+-------+-----------+---------- +------+| HOST1 | 50000 | 10000 | 60000 | 10 | NULL || HOST2 | 50000 | 10000 | NULL | NULL | 10 |+-------+---------+-------+-----------+---------- +------+2 rzędy w zestawie (0,00 s)
Pamiętaj, że zazwyczaj najlepiej jest, jeśli OP dostarcza dane.