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

Permintaan MySQL untuk mencari beberapa atribut dan value_id

Sepertinya Anda perlu menggunakan GROUP BY dan HAVING klausa.

SELECT
    `product_id`,
    COUNT (`primary_key_id`) AS `attr_count` /* primary key field here */
FROM `products_attr_val`
WHERE
   (`attr_id` = ? AND `value_id` = ?)
   OR (`attr_id` = ? AND `value_id` = ?)
   /* additional as necessary
   OR (`attr_id` = ? AND `value_id` = ?)
   */
GROUP BY `product_id`
HAVING `attr_count` = ? /* value here should be equal to number of attributes you are checking for */

Pastikan Anda memiliki indeks unik di seluruh product_id dan attr_id agar ini berfungsi dengan baik (Anda seharusnya sudah memiliki ini karena sepertinya tidak masuk akal jika suatu produk memiliki banyak catatan dengan attr_id yang sama ).

Anda juga perlu memastikan bahwa Anda keluar dari nilai Anda untuk digunakan dalam SQL Anda jika Anda belum melakukannya. Saya menunjukkan variabel-variabel ini di sini dengan ? yang, jika Anda menggunakan pernyataan yang disiapkan, akan menjadi cara Anda menulis SQL ini.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql - hari ini berada di antara dua nilai kolom

  2. Kontrol Versi Basis Data untuk MySQL

  3. Mysql Exists vs IN -- subquery vs subquery berkorelasi?

  4. MySQL VARCHAR(255) UTF8 terlalu panjang untuk kunci, tetapi panjang maksimalnya adalah 1000 byte

  5. Cara paling efisien untuk mendapatkan jumlah baris tabel