mysql n:m relationship: Find rows with several specific relations

后端 未结 2 1235
生来不讨喜
生来不讨喜 2021-01-27 17:27

I have two SQL Tables, \'products\' and \'tags\'. They have an n:m relationship, using a third table \'product_tags\'.

I want to use a query to find every product that h

相关标签:
2条回答
  • 2021-01-27 17:51

    You can use this solution. This gets all products that contain ALL keywords 1, 23, and 54:

    SELECT a.*
    FROM products a
    INNER JOIN product_tags b ON a.product_id = b.product_id
    WHERE b.tag_id IN (1,23,54)
    GROUP BY a.product_id
    HAVING COUNT(1) = 3
    

    Where 3 is the number of items in your WHERE IN list, so you can adjust accordingly based on the amount of tags you want to check on.

    0 讨论(0)
  • 2021-01-27 17:57

    Try this

    SELECT * FROM

     PRODUCTS p 
     JOIN PRODUCT_TAGS pt ON p.ID = pt.PRODUCT_ID
     JOIN TAGS t ON pt.TAG_ID = t.ID AND
          t.ID IN (1, 23, 54)
    

    I am assuming the column names. I think the column names are straight forward and you can use your column names easily. if you need more clarification let me know.

    0 讨论(0)
提交回复
热议问题