Vous devez grouper la colonne infection et (ip &ipc ) différemment puis rejoignez-les en utilisant une sous-requête comme celle-ci :
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
Voir ce SQLFiddle
Remarque : Je pense que la sortie souhaitée est erronée car :
- Dans
Table3il n'y a pas d'infectionpourip=6mais c'est dans votre sortie infectionotherest manquant dans votre sortie (à la place, il y amalware)