sql >> Database >  >> RDS >> Mysql

MySQL Tel overeenkomende records uit meerdere tabellen

Een andere manier om deze zoekopdracht te herschrijven.

Groepeer en tel in elke tafel afzonderlijk en doe dan mee:

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
  ;

Je moet zeker een index toevoegen op (ei) op elk van de 3 tafels, als je er nog geen hebt.



  1. Hoe de versie van de MySQL-engine in ClearDB bijwerken?

  2. Hulp nodig bij het maken van een query in SQL?

  3. Haal de dichtstbijzijnde lengte- en breedtegraad uit de MSSQL-databasetabel?

  4. Benchmarking databases 101 - deel 1