Bạn cần nhóm cột infection
và (ip
&ipc
) khác nhau sau đó kết hợp chúng bằng cách sử dụng truy vấn phụ như sau:
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
Xem SQLFiddle này
Lưu ý: Tôi nghĩ rằng đầu ra mong muốn của bạn là sai vì:
- Trong
Table3
không cóinfection
choip=6
nhưng nó nằm trong đầu ra của bạn -
infection
other
bị thiếu trong đầu ra của bạn (thay vào đó làmalware
)