sql >> Database teknologi >  >> RDS >> Mysql

Vælg rækker med flere tags... er der en bedre måde?

Det er ikke nødvendigt at lave flere joinforbindelser. Hvis du skal matche alle tags, kan du bruge en IN klausul med en underforespørgsel som denne:

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 )

Bemærk, at du skal justere tallet 2, så det er antallet af unikke tags, du matcher på. Pas på, hvis dette er brugerindtastede data, og de indtaster det samme tag to gange.



  1. Skal jeg oprette en klasse, der arver SQLiteOpenHelper for hver tabel i min database?

  2. Noget der ligner Hibernate i PHP?

  3. Hvordan indstilles timeout for anonym blok eller forespørgsel i plsql?

  4. Hvordan beregner man tidsforskel med tidsplan, der arbejder sort/hvid to tidsstempler?