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

Bergabunglah dengan dua tabel mysql, hubungan satu ke banyak

Anda perlu menggunakan GROUP BY untuk menjelaskan pengelompokan apa yang harus dihitung berdasarkan. Tanpa GROUP BY Anda hanya mendapatkan satu grup dari seluruh rangkaian hasil, seperti yang Anda lihat.

Dalam SQL standar perlu disertakan dalam GROUP BY klausa setiap ekspresi non-agregat yang disertakan dalam SELECT klausa, tetapi MySQL memungkinkan Anda lolos dengan tidak melakukan ini, memungkinkan ekspresi seperti berikut. (Setidaknya, ketika tidak dalam mode ketat; Saya tidak yakin apakah mode ketat memperkuat persyaratan ini untuk mencocokkan SQL standar)

SELECT `items`.*, COUNT(1) AS points
FROM `items` INNER JOIN `points` ON `items`.`id` = `points`.`item_id`
WHERE ...
GROUP BY `items`.`id`

Dengan asumsi bahwa items.id adalah kunci utama tabel ini, sehingga tidak akan muncul di lebih dari satu baris items , ini akan memiliki efek yang diinginkan.

Setelah Anda memperkenalkan GROUP BY penting untuk memahami perbedaan antara WHERE dan HAVING klausa. Yang pertama menerapkan kondisi sebelum kelompok dan agregat diterapkan, sedangkan yang terakhir berlaku setelahnya . Ini berarti Anda harus menggunakan HAVING jika Anda ingin melakukan kondisional berdasarkan hitungan itu; WHERE klausa dalam contoh awal Anda akan diterapkan sebelum agregat, jadi hasilnya adalah jumlah poin yang dibuat setelah tanggal yang ditentukan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tabel refresh otomatis tanpa halaman refresh PHP MySQL

  2. Bagaimana menghindari kondisi balapan dengan pemeriksaan unik di Django

  3. Bagaimana cara membuat file bahasa Codeigniter dari database?

  4. this._callback.apply bukan fungsi ! Node js kesalahan Mysql

  5. Laravel 5.1 - Koneksi MySQL Homestead. `Koneksi Menolak` &`Tidak ada file atau direktori seperti itu`