Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verschachtelte Abfragen zum Abrufen der Anzahl mit zwei Bedingungen

Sie müssen die Spalte infection gruppieren und (ip &ipc ) anders, dann verbinden Sie sie mit einer Unterabfrage wie dieser:

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

Siehe dieses SQLFiddle

Hinweis: Ich denke, Ihre gewünschte Ausgabe ist falsch, weil:

  1. In Table3 es liegt keine infection vor für ip=6 aber es ist in Ihrer Ausgabe
  2. infection other in Ihrer Ausgabe fehlt (stattdessen gibt es malware )