Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL:много към много връзка с множество И условие

Можете леко да промените текущата си заявка, за да получите желаните резултати:

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;

Това ще върне всички елементи, които имат и двете sport и leather етикети. Работи чрез агрегиране по елемент (както вече правехте), но след това заявява в HAVING клауза, че има два различни съвпадащи тагова. Тъй като се ограничихме само до тези два маркера в WHERE клауза, ако HAVING проверката преминава след агрегиране, това означава, че елементът е съвпадение.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Следвайте дизайна на таблицата с потребителска база данни

  2. Използване на IN клауза с MySQL с посочени стойности

  3. PHP SaaS с множество наематели – Отделни БД за всеки клиент или групиране?

  4. Как да направите пълно външно присъединяване в MySQL

  5. Брой до число x - sql