我有3张桌子:
产品
id name
1 ABC
2 ABCDC
3 ABEFC
分类
id name
1 Cate 1
2 Cate 2
3 Cate 3
ProductOption
id product_id size category_id
1 1 25,26,27 1,2
2 2 25,26,27 1,2
3 3 25,26,27 3
如何按类别输入选择产品是1 => data product_id结果:1,2
答案 0 :(得分:0)
您无法使用IN
运算符。
原因是IN
运算符需要一个值列表,但是您提供的是包含列表的单个值。这是一个常见的错误,我自己做了几次,所以不要为此感到难过。
您应该规范化表格 - 在99.9999999999999%的情况下,在单个列中保留多个值是错误的。
通过规范化我的意思是你应该添加2个表:ProductOptionSize
和ProductOptionCategory
,并将它们用于ProductOption
,Size
和{{1}之间的多对多关系} tables。
如果由于某种原因无法规范化您的表格,您可以使用Category
运算符选择某个类别中的所有商品,例如:
LIKE
注意:我在值之前和之后使用了SELECT p.id, p.name
FROM Product p
INNER JOIN ProductOption po ON(p.id = po.id)
WHERE CONCAT(','m po.category_id, ',') like '%,1,%'
,以确保您只获得类别1的结果,而不是11,123等。另外,我和#39; ve在,
的开头和结尾添加了,
,以获取值1位于category_id值列表的开头或结尾的结果。