gpt4 book ai didi

php - MySQL查询产品属性表

转载 作者:行者123 更新时间:2023-11-29 05:20:16 24 4
gpt4 key购买 nike

我有一个包含产品和属性关系的 mysql 表,

id  productid attributeid arributevalueid
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

我在编写 sql 查询时遇到问题,我正在尝试过滤具有所有属性的产品,

ex - 如果我传递属性值 16 和 36,匹配的产品是 521

我在下面测试了一个mysql查询

$nweryt=mysql_query('SELECT * FROM 
tbl_proattrconnect
WHERE
tbl_proattrconnect.attroid=9 AND tbl_proattrconnect.attrvalid=16
AND tbl_proattrconnect.attroid=12 AND tbl_proattrconnect.attrvalid=36');

echo mysql_num_rows($nweryt);

但是这样获取不到结果,显示为0,谁能帮帮我,非常感谢

最佳答案

请尝试一下:

SELECT
productid
FROM
tbl_proattrconnect
GROUP BY productid
HAVING SUM(attributevalueid IN (16, 36)) >= 2 /*here you specify after the >= how many attributes you have in IN()*/
AND SUM(attributevalueid BETWEEN x and y) >= 1 /*here you just always leave it at >= 1*/
AND SUM(attributevalueid BETWEEN z and w) >= 1 /*feel free to add as much checks as necessary.*/

这使用了一个小技巧。 attributevalueid IN (16, 36) 返回 true 或 false,1 或 0。

或者,您可以自行加入表,但这可能会导致性能稍差,并且如果您必须检查更多属性,则可能会非常笨拙。您必须为每个属性自行加入表一次。

关于php - MySQL查询产品属性表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26796709/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com