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

Изберете редове с множество етикети... има ли по-добър начин?

Няма нужда да правите множество присъединявания. Ако трябва да съпоставите всички тагове, можете да използвате IN клауза с подзаявка като тази:

select p.sku, p.name, p.path 
from shop_products p
where p.sku in (
    select pc.product_sku 
    from shop_products_categories pc 
    inner join shop_categories c on pc.category_id = c.id
    where c.path in ('flowers', 'romance')
    group by pc.product_sku
    having count(distinct c.path) = 2
)

Имайте предвид, че ще трябва да коригирате числото 2, за да бъде броят на уникалните тагове, с които съвпадате. Внимавайте в случай, че това са въведени от потребителя данни и те въвеждат един и същ етикет два пъти.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tomcat JDBC Conencton Pool + MySQL дава проблеми със счупена тръба, дори при валидиране на връзката

  2. mysql свързване на таблици без ключове

  3. ER_ACCESS_DENIED_ERROR:Достъпът е отказан за потребител ''@'localhost' (с парола:НЕ)

  4. Инструменти за визуализация на Mysql

  5. Грешка при настройката на първоначалното хранилище в Pentaho Kettle