我对某些SQL有困难 - 并且发现很难描述,所以请耐心等待。我正在尝试选择具有x个正确功能的产品。为了简化问题,我遇到的问题是有几张桌子。关于我的表的相关信息是:
products(**product_id**)
features(**feature_id, product_id**, value_id)
featurenames(**feature_id**, name)
featurevalues(**value_id**, value)
我正在尝试选择所有产品,例如性别:男性年龄:儿童,年龄和性别是功能名称表中的名称,男性和儿童是功能值表中的值。这是另一个更大的查询的一部分,它按类别获取所有产品,我没有包括它,因为它只会使事情变得复杂。感谢您的帮助。
答案 0 :(得分:1)
桌子很好,你加入它两次。
Select
P.Product_ID
From
Products P
Inner Join Features F1 On P.Product_ID = F1.Product_ID
Inner Join FeatureNames FN1 On F1.Feature_ID = FN1.Feature_ID And FN1.Name = 'sex'
Inner Join FeatureValues FV1 On F1.Value_ID = FV1.Value_ID And FV1.Value = 'male'
Inner Join Features F2 On P.Product_ID = F2.Product_ID
Inner Join FeatureNames FN2 On F2.Feature_ID = FN2.Feature_ID And FN1.Name = 'age'
Inner Join FeatureValues FV2 On F2.Value_ID = FV2.Value_ID And FV1.Value = 'children'