我的数据库中有一个表格,结构如下:
obj_id - rel_val
4034 - 7366
4034 - 7387
4035 - 7366
4035 - 8051
4035 - 8057
Field" obj_id" - 它的项目ID字段。字段" rel_val" - 属性值id。 例如。 ID为4034的物品T恤。有属性颜色"红色" ID为7366.且属性大小 - " M"(此属性值的ID为-7387)。
我应该如何编写正确的sql查询来获取所有带颜色的项目" red"和尺寸" M"等等。
我现在拥有的:
$sth = $dbh->prepare("SELECT obj_id
FROM cms3_object_content WHERE rel_val IN ('7343','7355','7368') LIMIT 100");
$sth->execute();
$result = $sth->fetchAll();
我尝试使用运算符IN,但如果有任何值,它会返回obj_id。
P.S。对不起,我的英语不好。我希望它能理解我想要的东西。
答案 0 :(得分:3)
SELECT obj_id
FROM cms3_object_content
WHERE rel_val IN ('7343','7355','7368')
group by obj_id
having count(distinct rel_val) = 3
LIMIT 100