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

SQL:Jadikan warna dari tabel warna dapat dicari

Anda akan menggunakan agregasi bersyarat di sini. Untuk Merah dan Biru misalnya Anda ingin mencari kartu di mana

  1. kedua warna itu ada
  2. tidak ada warna lain

Artinya jika saya menghitung Merah dan Biru untuk satu kartu saya harus mendapatkan 2. Jika saya menghitung semua warna saya juga harus mendapatkan 2. (Sama untuk satu, tiga warna atau lebih.)

Jadi gunakan kueri ini dan hanya ubah warna yang disebutkan dan jumlah warna:

select *
from cards_data where id in
(
  select cards_id
  from con_cards_colors
  group by cards_id
  having count(case when colors_id in (select id from colors where name in ('Red','Blue')) then 1 end) = 2 -- i.e. find all
  and count(*) = 2 -- i.e. find only those and no others
);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menyimpan riwayat pembaruan catatan di MySQL?

  2. Sinkronisasi data antara MySQL dan MongoDB

  3. php membaca bidang bit mysql mengembalikan karakter aneh

  4. Peringkat berdasarkan dua kolom

  5. Bagaimana cara menggunakan banyak database untuk satu aplikasi Rails 3.1 di Heroku?