Mysql通过其他选项从一个表中选择

时间:2015-05-31 11:50:12

标签: mysql select join filter

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);

它显示了我需要的东西,但也显示了只有一个所需选项的产品。

2 个答案:

答案 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