sql >> Databasteknik >  >> RDS >> Mysql

Kapslade frågor för att få räkning med två villkor

Du måste gruppera kolumnen infection och (ip &ipc ) på ett annat sätt och sedan gå med dem med hjälp av en underfråga så här:

SELECT t1.ip, t1.isp, t2.infection, t1.ipc, t1. ispc, t2.incount
FROM
    (SELECT ip, isp, infection, COUNT(ip) as ipc, COUNT(isp) as ispc
    FROM (
       SELECT ip, isp, infection
       FROM tbl1
       UNION ALL
       SELECT ip, isp, infection
       FROM tbl2
       UNION ALL
       SELECT ip, isp, infection
       FROM tbl3
       )x
     GROUP BY ip, isp) t1
JOIN
    (SELECT ip, isp, infection, COUNT(infection) as incount
     FROM (
       SELECT ip, isp, infection
       FROM tbl1
       UNION ALL
       SELECT ip, isp, infection
       FROM tbl2
       UNION ALL
       SELECT ip, isp, infection
       FROM tbl3
       )x
    GROUP BY ip, isp,  infection)t2
ON t1.ip = t2.ip
ORDER BY ip, isp, infection Desc

Se denna SQLFiddle

Obs! Jag tror att din önskade utdata är fel eftersom:

  1. I Table3 det finns ingen infection för ip=6 men det finns i din utdata
  2. infection other saknas i din utdata (istället finns det malware )


  1. Hur man kontrollerar serverstatus i MySQL Workbench med hjälp av GUI

  2. Insättningshastigheten minskar när tabellen växer i mysql

  3. använder GROUP BY i mysql 8

  4. Hur man visar en bild från en mysql blob