Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Kueri bersarang untuk mendapatkan hitungan dengan dua kondisi

Anda perlu mengelompokkan kolom infection dan (ip &ipc ) secara berbeda kemudian gabungkan mereka menggunakan sub-kueri seperti ini:

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

Lihat SQLFiddle ini

Catatan: Saya pikir output yang Anda inginkan salah karena:

  1. Dalam Table3 tidak ada infection untuk ip=6 tapi itu ada di output Anda
  2. infection other tidak ada dalam output Anda (sebagai gantinya ada 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. Tidak dapat memproses permintaan MySQL FULL JOIN

  2. Formulir PHP mengembalikan Pemberitahuan:Konversi array ke string

  3. Bagaimana cara terhubung dengan MySQL DB yang berjalan sebagai wadah di buruh pelabuhan?

  4. Bagaimana cara mendapatkan nilai yang tersedia untuk bidang SET?

  5. Disebabkan oleh:java.time.DateTimeException:Konflik ditemukan:Bidang DayOfWeek 6 berbeda dari DayOfWeek 2 yang berasal dari 30-01-2016