F.E。我有2张桌子:
产品(ID,描述,价格) 规格(id_product,id_specif,specific_val)
我需要选择所有具有多个所需规格值的产品。 F.E.选择所有id_specif = 153的产品,以及该specific_val =“test1”和id_specif = 55的值以及它的值一个specific_val =“test2”
更新了我的select语句,但可能完全错误,因为我觉得我还是个傻瓜:)
从产品左侧选择product.id,product.brand,product.model,在product.id = specific_val.id_product,其中(product.id_group = 5和product.active = 1)和(specif_val.specif_val ='test_val1) '和specif_val.id_specif = 163)和(specif_val.specif_val ='test_val2'和specific_val.id_specif = 155);
它显示了我需要的东西,但也显示了只有一个所需选项的产品。
答案 0 :(得分:1)
如果提供表格结构会更有帮助。 但无论如何,我的修复可能会有所帮助。
select product.id, product.brand, product.model
from product
inner join specif_val as s1
on product.id=s1.id_product and s1.specif_val='test_val1'
and s1.id_specif=163
inner join specif_val as s2
on product.id=s2.id_product and
s2.specif_val='test_val2' and s2.id_specif=155
where product.id_group=5 and product.active = 1;
对于每个新规范,您需要再添加一个
inner join specif_val as s2
on product.id=s2.id_product and
s2.specif_val='test_val2' and s2.id_specif=155
为了获得良好的性能,product.id和specif_val.id_product列必须为INDEXED。
答案 1 :(得分:0)
SELECT * FRM products p JOIN Specifications s ON p.id = s.id_product
that will return all products that have data in specifications table
SELECT * FRM products p JOIN Specifications s ON p.id = s.id_product