sql >> Database >  >> RDS >> Mysql

Geneste zoekopdrachten om het aantal te krijgen met twee voorwaarden

U moet kolom infection groeperen en (ip &ipc ) op een andere manier, voeg ze dan toe met behulp van een subquery als volgt:

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

Bekijk deze SQLFiddle

Opmerking: Ik denk dat je gewenste output verkeerd is omdat:

  1. In Table3 er is geen infection voor ip=6 maar het staat in je output
  2. infection other ontbreekt in uw uitvoer (in plaats daarvan is er malware )


  1. Bestanden opslaan in SQL Database met behulp van FILESTREAM - Deel 1

  2. Waarom werken CROSS JOIN-voorwaarden niet in de 'ON'-clausule, alleen in de WHERE-clausule?

  3. Hoe maak je een echte één-op-één relatie in SQL Server

  4. volledige tekst opvragen in joomla