Sziasztok a következőre szeretnék megoldást találni:
Adott egy tábla, amelynek egy mezője több adatot is tartalmaz |-al elválasztva. SUBSTRING_INDEX függyvénnyel feldarabolom és AS-al különböző néven kérdezem le őket.
Egyébként nagios log tároló tábláról van szó. Az így feldarabolt adatok: host, service, status, datetime.
Szeretném minden egyes host, minden egyes service-ét lekérdezni, de úgy hogy csak a legújabb datetime-al szereplő jelenjen meg.
Ezt úgy próbáltam megoldani, hogy lekérdezem AS-el a hostot és sevice-t összefűzve és ezt GROUP BY-olom. Ez jó is lenne, de ilyenkor nem a dátum szerinti utolsót pakolja be a lekérdezésbe. Próbáltam ORDER BY-olni a GROUP BY előtt, de ez nem működött. A GROUP BY után pedig, csak a már group by-olt sorokat rendezte.
Szóval erre nem sikerült megoldást talánom.
Íme a lekérdezés jelenleg így néz ki: (ebben csak GROUP BY van, rendezés nincs)
SELECT msg, SUBSTRING_INDEX(SUBSTRING_INDEX(msg, '|', 1),':',-1) as hostnev, SUBSTRING
_INDEX(SUBSTRING_INDEX(msg, '|', 2),':',-1) as host_service, SUBSTRING_INDEX(SUBSTRING_INDEX(msg, '
|', 2),'|',-1) as service, SUBSTRING_INDEX(SUBSTRING_INDEX(msg, '|', 3),'|',-1) as state, SUBSTRING
_INDEX(SUBSTRING_INDEX(msg, '|', 6),'|',-1) as status, datetime FROM nagioslogs WHERE msg LIKE '%SE
RVICE%' GROUP BY host_service
Remélem érthető amit írtam.
Bármilyen öteletet szívesen veszek.