Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySql Połącz dwa zapytania (podwybór lub sprzężenie lub suma)

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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mierzenie czasu online na stronie internetowej

  2. mysql count grupuj według kolejności według optymalizacji

  3. JDBC ERROR:08S01 czasami się zdarza

  4. Zamówienie Laravel według relacji ma wiele

  5. Jak przeszukiwać kolumnę JSON w MySQL