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
Table3
il n'y a pas d'infection
pourip=6
mais c'est dans votre sortie infection
other
est manquant dans votre sortie (à la place, il y amalware
)