我有一个名为PRODUCTS的表,其中有3列用于三个不同的类别,我想选择所有3列中任何一个都具有3个值的产品。 我想要做的是显示基于3个类别中的任何一个的相关产品。
示例表:
ID,名称,CAT1,CAT2,CAT3
1,键盘,2,8,4
2,鼠标,2,NULL,NULL
3,Monitor,16,2,NULL
让我知道我正在查看ITEM id = 1,我想查询以显示3列中任何一个中具有类别编号2的其他2个产品。
我该怎么做?
非常感谢, 安德烈
答案 0 :(得分:2)
SELECT * FROM table_name WHERE id != 1 AND (cat1 = 2 OR cat2 = 2 OR cat3 = 2)
答案 1 :(得分:1)
那么,对于任何给定的ID,在其类别中找到与所选类别具有相同类别的其他“兄弟姐妹”?
选择id为selected_id,p1.cat为p1_cat,p2.cat为p2_cat,p3.cat为p3_cat
从产品p1,产品p2,产品p3
其中
p1.cat = p2.cat
和
p1.cat = p3.cat
//以及其他各种资格,这不是重复的
p1.id!= p2.id
p1.id!= p3.id
p2.id!= p3.id
等
//你也可以join products p3 on p3.cat = p1.cat
而不是{{1}}
//我这么做的冗长方式