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

MySQL Pilih Where In Many to Many

Dengan asumsi Anda menginginkan lebih dari sekadar id artikel:

SELECT a.id
      ,a.other_stuff
  FROM articles a
  JOIN article_category ac
    ON ac.article_id = a.id
GROUP BY a.id
HAVING GROUP_CONCAT(DISTINCT ac.category_id ORDER BY ac.category_id SEPARATOR ',') = '1,2'

Jika yang Anda inginkan hanyalah id artikel, coba ini:

SELECT article_id
  FROM article_category 
GROUP BY article_id
HAVING GROUP_CONCAT(DISTINCT category_id ORDER BY category_id SEPARATOR ',') = '1,2'

Lihat aksinya di http://sqlfiddle.com/#!2/9d213/4

Harus juga menambahkan bahwa keuntungan dari pendekatan ini adalah dapat mendukung pemeriksaan sejumlah kategori tanpa harus mengubah kueri. Buat saja '1,2' sebagai variabel string dan ubah apa yang diteruskan ke kueri. Jadi, Anda dapat dengan mudah mencari artikel dengan kategori 1, 2, dan 7 dengan melewatkan string '1,2,7'. Tidak perlu bergabung lagi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengambil baris yang ditambahkan satu jam terakhir

  2. mysql HIBAH + DI MANA

  3. Bagaimana cara memesan kueri MySQL dengan kolom tertentu?

  4. Cara Menggunakan Tampilan di Database MySQL

  5. Apa manfaat zerofill di MySQL?