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

Menghitung record yang termasuk dalam kategori di MySQL

Tambahkan kolom ke Kategori yang memberikan kategori utama di mana setiap kategori berada (dengan kategori utama memberikan dirinya sendiri). Jadi:

cat_id | main_cat_id | title
-------+-------------+---------
01     | 01          | Science
0101   | 01          | Medicine
02     | 02          | Sport

Pilih dari ini di cat_id =main_cat_id untuk menemukan kategori utama; gabungkan kembali ke dirinya sendiri di left.cat_id =right.main_cat_id untuk menemukan kategori anak, lalu ke posting di cat_id =cat_id. Kelompokkan menurut left.cat_id dan proyeksikan melalui cat_id dan count(*).

Saya mencoba ini di PostgreSQL 8.4, dan saya tidak mengerti mengapa ini tidak berhasil di MySQL, karena kuerinya cukup mendasar. Meja saya:

create table categories(
  cat_id varchar(40) primary key,
  main_cat_id varchar(40) not null references categories,
  title varchar(40) not null
)

create table posts (
  post_id integer primary key,
  cat_id varchar(40) not null references categories,
  title varchar(40) not null
)

Permintaan saya (pengelompokan berdasarkan judul dan bukan ID):

select m.title, count(*)
from categories m, categories c, posts p
where m.cat_id = c.main_cat_id
  and c.cat_id = p.cat_id
group by m.title

PEMBARUAN:Saya juga mencoba membuat ini berfungsi dengan operasi string, ketika OP mencoba. Kueri (dalam SQL yang sesuai standar seperti yang diterima oleh PostgreSQL, bukan dialek MySQL) adalah:

select m.title, count(*)
from categories m, posts p
where m.cat_id = substring(p.cat_id from 1 for 2)
group by m.title;

Yang bekerja dengan baik. Saya tidak dapat memberikan perbandingan yang berarti mengenai kecepatan, tetapi rencana kueri untuk ini memang terlihat sedikit lebih sederhana daripada untuk penggabungan dua arah.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara menggunakan insert atau replace di codeigniter

  2. PHP - Tanda kutip tunggal atau tanda kutip ganda di sekitar kueri SQL?

  3. 15 Pertanyaan Wawancara Dasar MySQL untuk Administrator Basis Data

  4. Bagaimana cara memasukkan skema database MySQL di GitHub?

  5. Jumlah MySQL, hitung dengan grup oleh dan gabung