Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zapytania zagnieżdżone, aby uzyskać liczbę z dwoma warunkami

Musisz pogrupować kolumnę infection i (ip &ipc ) w inny sposób, a następnie dołącz do nich za pomocą podzapytania w ten sposób:

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

Zobacz ten SQLFiddle

Uwaga: Myślę, że żądany wynik jest nieprawidłowy, ponieważ:

  1. W Table3 nie ma infection dla ip=6 ale to jest w twoim wyniku
  2. infection other brakuje w wynikach (zamiast tego jest 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. tablica mySQLi bezpośrednio do tablicy json

  2. Obróć tabelę i wyświetl uporządkowane szeregi czasowe

  3. Korzystanie z centralnego serwera bazy danych dla wielu witryn:możliwe?

  4. W jaki sposób konstruktor klasy potomnej będzie współdziałać z konstruktorem klasy nadrzędnej w php?

  5. Jak zaktualizować wersję mysql w xampp (błąd z innodb_additional_mem_pool_size)