Mysql
 sql >> база данни >  >> RDS >> Mysql

Вложените заявки за получаване на брой с две условия

Трябва да групирате колона infection и (ip &ipc ) по различен начин, след което ги присъединете, като използвате подзаявка като тази:

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

Вижте този SQLFiddle

Забележка: Мисля, че желаният от вас резултат е грешен, защото:

  1. В Table3 няма infection за ip=6 но е във вашия изход
  2. infection other липсва във вашия резултат (вместо това има malware )


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да транспонирате MYSQL db в PHP

  2. Как да създам нова страница в wordpress плъгин?

  3. Промяна на формата на датата в SSIS

  4. Свържете се отдалечено с MySQL на Google Compute Engine VM

  5. MySQL претеглена средна стойност в една заявка