sql >> Database >  >> RDS >> Mysql

Selecteer rijen met meerdere tags... is er een betere manier?

Het is niet nodig om meerdere joins te doen. Als u alle tags wilt matchen, kunt u een IN . gebruiken clausule met een subquery als deze:

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
)

Houd er rekening mee dat u het getal 2 moet aanpassen om het aantal unieke tags te zijn waarop u overeenkomt. Pas op als dit door de gebruiker ingevoerde gegevens zijn en ze dezelfde tag twee keer invoeren.



  1. MySQL:VEREIST SSL niet weergegeven in subsidies

  2. NULL-waarden binnen de NOT IN-clausule

  3. PHP - MYSQL onbekende kolom in WHERE Join

  4. Integer vs char voor DB-recordeigenschap