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

MySQL Policz pasujące rekordy z wielu tabel

Inny sposób na przepisanie tego zapytania.

Grupuj i licz w każdym stole osobno, a następnie dołącz:

SELECT  a.id, 
        COALESCE(b.t1, 0) AS t1,
        COALESCE(c.t2, 0) AS t2,
        COALESCE(d.t3, 0) AS t3
FROM
        entity a
    LEFT JOIN
        ( SELECT ei,
                 COUNT(*) AS t1
          FROM table1
          GROUP BY ei
        ) AS b
            ON a.id = b.ei
    LEFT JOIN
        ( SELECT ei,
                 COUNT(*) AS t2
          FROM table2
          GROUP BY ei
        ) AS c
            ON a.id = c.ei
    LEFT JOIN
        ( SELECT ei,
                 COUNT(*) AS t3
          FROM table3
          GROUP BY ei
        ) AS d
            ON a.id = d.ei
  ;

Zdecydowanie powinieneś dodać indeks na (ei) na każdym z 3 stołów, jeśli nie masz jednego.



  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 group_concat z zaznaczeniem wewnątrz wybierz

  2. SQL do kopiowania wartości z jednej tabeli do drugiej

  3. Dodawanie do tej samej tablicy za pomocą dwóch różnych pętli foreach PHP/SQL

  4. Co to jest nazwa użytkownika/hasło do połączenia w środowisku MySQL?

  5. Jak uruchomić testową bazę danych Django tylko w pamięci?