sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo obtener el recuento del estado y la ciudad del país mediante la consulta SQL de la base de datos?

Debido a que los países pueden tener varios estados y cada estado puede tener varias ciudades, cuando se unen estos 1 a muchos y 1 a muchos, el recuento de estados se infla. Por lo tanto, necesita el recuento distinto de estado. El conteo de la ciudad ya es único para el país y el estado, por lo que no necesita la distinción. donde como el estado no es exclusivo de la ciudad del país, se necesita algo distinto. Por supuesto, esto supone que desea el recuento de estados únicos en cada país.

SELECT c.name, count(distinct s.name) as statecount,  count(Ci.name) as CityCount
FROM countries c
INNER JOIN states s 
  on c.id = s.country_ID
INNER JOIN cities ci
  ON s.id = ci.state_id
GROUP BY C.name

O manteniendo la notación de unión de estilo antiguo:

SELECT c.name, count(distinct s.name) as statecount,  count(ci.name) citycount 
FROM countries c,states s,cities ci
WHERE ci.state_id = s.id 
  and s.country_id = c.id 
GROUP BY s.name

Considere el siguiente ejemplo:http://rextester.com/ZGYF56786

o pictóricamente debajo

Vea cuándo se producen las uniones entre el país, el estado y la ciudad. El estado se repite debido a que se une a la ciudad, lo que hace que el estado ya no sea único en esa columna. Al hacer una diferenciación, solo devolvemos un recuento de 2 estados en lugar de 7, uno para cada registro.

+-----+------------+-------------+
| USA | Illinois   | Chicago     |
| USA | Illinois   | Springfield |
| USA | Illinois   | Peoria      |
| USA | California | LosAngeles  |
| USA | California | Sacramento  |
| USA | California | SanDeigo    |
| USA | California | Hollywood   |
| USA | California | Oakland     |
|-----|------------|-------------|
|Name | statecount | Citycount   |
| USA | 2          | 7           | <-- Is this result correct? (i hope so)
| USA | 7          | 7           | <-- or this one? (then why bother just count(*) and only 1 count needed.
+-----+------------+-------------+

Creo que desea el primer resultado, ya que solo hay 2 estados en la tabla de EE. UU. y 7 ciudades.