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

Banyak hitungan dalam satu kueri SQL

jawaban @VoteyDisciple berada di jalur yang benar, tetapi kuerinya memerlukan beberapa perbaikan:

SELECT c.id, c.title,
    SUM(ts1.section_id = 1) AS doc1,
    SUM(ts1.section_id = 2) AS doc2,
    SUM(ts1.section_id = 3) AS doc3,
    SUM(ts1.section_id = 4) AS doc4
FROM category AS c
  LEFT JOIN category_link_section AS ts1
    ON (c.id = ts1.category_id)
GROUP BY c.id;

Penjelasan:

  • IF() ekspresi berlebihan karena kesetaraan sudah mengembalikan 1 atau 0.
  • Ambil ts1.section_id=1 keluar dari kondisi bergabung, atau Anda tidak akan pernah mendapatkan section_id lainnya nilai.
  • Kelompokkan menurut c.id hanya. Saya berasumsi OP hanya menginginkan satu baris per kategori, dan kolom untuk jumlah setiap section_id nilai untuk kategori yang bersangkutan. Jika query dikelompokkan berdasarkan c.id, ts1.section_id , maka akan ada hingga empat baris per kategori.
  • Pindahkan koma di daftar pilih. Koma mengambang di awal baris terlihat jelek.;-)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Fungsi MAX di mana klausa mysql

  2. Perbarui baris pertama mysql php

  3. Pilih 3 catatan terbaru di mana nilai satu kolom berbeda

  4. MYSQL - Menggabungkan dua tabel

  5. Adakah alasan untuk klausa GROUP BY tanpa fungsi agregasi?