我正在进行一次SQL大脑时刻。当该产品的任何属性ID是特定值时,我试图获取一组记录。
问题是,我需要获得同一产品的所有其他属性。
以下是我的意思:
有办法吗?目前我在做这个
select product_id
from mytable
where product_attribute_id = 154
但我显然只得到单一记录:
非常感谢任何帮助。我的SQL技能有点基础。
修改
有一个条件我忘了提及。有时我需要能够过滤两个属性ID。例如,在上面的第一张图片中,下面的集合(产品ID 31039)具有属性ID 395.我需要在154,395上过滤。结果将不包括没有属性id的顶部集合(31046) 395.
答案 0 :(得分:4)
我认为你正在寻找:
SELECT * myTable where Product_Id IN (SELECT Product_Id FROM MyTable WHERE Product_AttributeID = @parameterValue)
英文:获取所有记录,使其产品ID在所有产品ID的集合中,以使其属性ID等于@parameterValue。
编辑:
SELECT * myTable where Product_Id IN (SELECT Product_Id FROM MyTable WHERE Product_AttributeID = @parameterValue1) AND Product_Id IN (SELECT Product_Id FROM MyTable WHERE Product_AttributeID = @parameterValue2)
应该这样做。
答案 1 :(得分:4)
使用正确的连接,您可以链接回同一个表
select B.*
from mytable A
-- retrieve B records from A record link
inner join mytable B on B.product_id = A.product_id
where A.product_attribute_id = 154 -- all the A records
编辑:要获得具有2个属性的产品,您可以再加入
select C.*
from mytable A
-- retrieve B records from A record link
inner join mytable B on B.product_id = A.product_id
inner join mytable C on C.product_id = A.product_id
where A.product_attribute_id = 154 -- has attrib 1
AND B.product_attribute_id = 313 -- has attrib 2