Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara menghitung negara bagian dan kota negara menggunakan kueri SQL dari database?

Karena negara dapat memiliki beberapa negara bagian dan setiap negara bagian dapat memiliki beberapa kota saat Anda menggabungkan 1 ke banyak dan 1 ke banyak jumlah negara bagian Anda meningkat. Jadi, Anda membutuhkan jumlah negara yang berbeda. Jumlah kota sudah unik untuk negara dan negara bagian, sehingga tidak perlu dibedakan. sedangkan negara bagian tidak unik untuk kota pedesaan, maka diperlukan pembedaan. Ini tentu saja mengasumsikan Anda menginginkan jumlah negara bagian unik di setiap negara.

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

Atau pertahankan notasi gabung gaya lama Anda:

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

Perhatikan contoh berikut:http://rextester.com/ZGYF56786

atau gambar di bawah

Lihat kapan penggabungan terjadi antara negara, negara bagian, dan kota. state diulang karena join ke kota, membuat state tidak lagi unik di kolom itu, dengan melakukan pembedaan kita hanya mengembalikan hitungan 2 state, bukan 7, satu untuk setiap record.

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

Saya pikir Anda menginginkan hasil pertama karena hanya ada 2 negara bagian di tabel AS yang terdaftar dan 7 kota.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Google Maps Simpan Poligon dan poin di MySQL menggunakan PHP

  2. Bagaimana cara mengubah waktu ke zona waktu perangkat iPhone?

  3. Cara Menemukan Nilai Non-Numerik di Kolom di MySQL

  4. Peringatan:mysql_real_escape_string():Akses ditolak untuk pengguna 'root'@'localhost' (menggunakan kata sandi:NO) .../public_html/checklogin.php

  5. Fungsi Jaro-winkler:mengapa skor yang sama cocok dengan kata-kata yang sangat mirip dan sangat berbeda?