【发布时间】:2014-11-07 10:23:24
【问题描述】:
我有一个 mysql 表,其中包括如下产品和属性关系,
id proid attributeid attrvalid
18 521 12 36
17 521 11 43
16 521 9 16
29 522 18 168
28 522 17 138
27 522 16 115
26 522 15 71
25 522 12 36
24 522 11 48
23 522 9 19
我写了一个 mysql 查询来获取与给定属性 id 匹配的产品 id
ex- 此查询返回产品 ID 521,因为 16 和 36 两个属性值都在 521 产品上具有(但不同的属性)
SELECT proid
FROM tbl_proattrconnect
GROUP BY proid
HAVING SUM(attrvalid IN (16,36)) >=2
但我遇到了相同属性集值的问题
ex- 如果我通过 48 和 43(48 和 43 值在同一个属性集中)我没有得到任何结果,但它应该返回 521 和 522
SELECT proid
FROM tbl_proattrconnect
GROUP BY proid
HAVING SUM(attrvalid IN (48,43)) >=2
谁能更正这个查询,我需要同时处理这两种情况,非常感谢
举个真实的例子 三星和索尼等产品品牌具有相同的属性如果客户同时选择两者我想同时显示,但是如果客户从另一个属性中选择三星和索尼和颜色我想显示只有选择颜色的三星和索尼结果,我有大约 10 个属性.
【问题讨论】:
-
什么是
attrvalid? -
列 arributevalueid
-
这里没有骄傲
-
对不起,我编辑了表格标题
-
只有 522 有 48 个,只有 521 有 43 个。那么你为什么期望它们都有呢?