Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да получите броя на държавата и града на държавата, използвайки SQL заявка от база данни?

Тъй като държавите могат да имат множество щати и всеки щат може да има множество градове, когато се присъедините към тези 1 към много и 1 към много много, вашият брой щати се увеличава. Така че имате нужда от различен брой на състоянието. Броят на градовете вече е уникален за страната и щата, поради което не се нуждае от разграничение. където тъй като държавата не е уникална за селския град, следователно е необходима различна. Това разбира се предполага, че искате броя на уникалните щати във всяка страна.

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

Или запазване на стария ви стил на нотация за присъединяване:

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

Разгледайте следния пример:http://rextester.com/ZGYF56786

или илюстрирано по-долу

Вижте кога стават присъединявания между държава, щат и град. състоянието се повтаря поради присъединяването към града, което прави състоянието вече неуникално в тази колона, като правим отделно, връщаме само брой от 2 състояния вместо 7, по един за всеки запис.

+-----+------------+-------------+
| 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.
+-----+------------+-------------+

Мисля, че искате първия резултат, тъй като в таблицата на САЩ има само 2 изброени щата и 7 града.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL:Връщане на най-често срещаната стойност за всеки човек

  2. Изберете mysql заявка между дата?

  3. PHP PDO MySQL и как наистина се справя с MySQL транзакциите?

  4. Кодирайте първия си API с Node.js и Express:Свържете база данни

  5. какво е значението на изберете ''-''