sql >> Database teknologi >  >> RDS >> Mysql

MySQL Tæl matchende poster fra flere tabeller

En anden måde at omskrive denne forespørgsel på.

Gruppér og tæl i hver tabel individuelt, og deltag derefter:

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
  ;

Du bør helt sikkert tilføje et indeks på (ei) på hvert af de 3 borde, hvis du ikke har et.



  1. SQL Server-ydelse TOP IO-forespørgsel -1

  2. Grundlæggende MySQL-forespørgsler

  3. Valg af de sidste 7 dage fra Now() i MYSQL

  4. Ny funktion til BYOC – Pause og genoptagelse af klynger