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

MySQL:hubungan banyak ke banyak dengan banyak kondisi DAN

Anda dapat sedikit mengubah kueri Anda saat ini untuk mendapatkan hasil yang Anda inginkan:

SELECT i.id, i.name    -- OK to select name assuming id is the PK
FROM item i
LEFT JOIN relation r
    ON i.id = r.item_id
LEFT JOIN tag t
    ON t.id = r.tag_id
WHERE t.tag IN ('sport', 'leather')
GROUP BY i.id
HAVING COUNT(DISTINCT t.tag) = 2;

Ini akan mengembalikan semua item yang memiliki keduanya sport dan leather tag. Ini bekerja dengan menggabungkan berdasarkan item (seperti yang sudah Anda lakukan), tetapi kemudian menegaskan dalam HAVING klausa bahwa ada dua tag pencocokan yang berbeda. Karena kami membatasi hanya dua tag ini di WHERE klausa, jika HAVING pemeriksaan berlalu setelah agregasi, ini menyiratkan bahwa item tersebut cocok.



  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 saya bisa mengembalikan hak penuh pengguna root MySQL?

  2. cara memilih n baris

  3. Bagaimana saya bisa menekan output tajuk kolom untuk satu pernyataan SQL?

  4. Bagaimana saya bisa menjumlahkan nilai dalam database kamar android

  5. MySQL - PILIH ... WHERE id IN (..) - urutan yang benar