gpt4 book ai didi

MySQL 过滤属性

转载 作者:行者123 更新时间:2023-11-29 00:50:45 24 4
gpt4 key购买 nike

我正在尝试创建一种更好的方法来过滤网站上的项目。实际过滤效果很好,但显示可用选项让我很困惑。

我正在使用此 sql 查询来获取特定类别的所有选项。

SELECT 
atr1.`type` , atr1.`value`
FROM
`index-shop-filters` AS atr1
JOIN
`index-shop-filters` as atr2 ON atr1.`item` = atr2.`item`
WHERE
( atr2.`type` = 'sys-category' AND atr2.`value` = '1828' )
GROUP BY
atr1.`type`, atr1.`value`

但是当我添加一个选定的过滤器以希望获得剩余的过滤器时。它没有给我剩余的过滤器。相反,它会忽略第二个 OR 语句。

SELECT 
atr1.`type` , atr1.`value`
FROM
`index-shop-filters` AS atr1
JOIN
`index-shop-filters` as atr2 ON atr1.`item` = atr2.`item`
WHERE
( atr2.`type` = 'sys-category' AND atr2.`value` = '1828' )
OR ( atr2.`type` = 'Manufacturer' AND atr2.`value` = 'Sony' )
GROUP BY
atr1.`type`, atr1.`value`

我尝试添加 HAVING COUNT(*) = 2 但没有得到正确的结果。

index-shop-filters中的数据是这样的。

项目,类型,值(value)

类型有系统类别、制造商、尺寸、颜色等。

当他们选择第一个选项(如 sys-category)时,它将显示可用的选项。如果他们然后选择制造商(如索尼),它将显示项目是索尼的可用选项,并且在类别中。

最佳答案

好吧,我想我终于明白你想做什么了:你不是想得到一个items的列表,你是想得到一个item的列表过滤器。抱歉,我应该早点知道的。

无论如何,现在我明白了问题所在,但我没有很好的答案。您要尝试做的事情相当复杂,并且仅通过一次连接就无法完成(据我所知)。我只能想到两种方法来做到这一点:使用多个子查询或使用多个连接。这两种解决方案都很复杂且无法很好地扩展,但这是我能想到的全部。

这是一个可能的解决方案,使用子查询,我推荐:

SELECT item, `type`, `value`
FROM `index-shop-filters` AS f
WHERE f.item IN (SELECT item FROM `index-shop-filters` WHERE `type` = 'sys-category' AND `value` = '1828')
AND f.item IN (SELECT item FROM `index-shop-filters` WHERE `type` = 'Manufacturer' AND `value` = 'Sony')

这是一个解决方案,使用连接,更好但仍然不太好:

SELECT item, `type`, `value`
FROM `index-shop-filters` AS f
JOIN `index-shop-filters` AS f2 ON f.item = f2.item AND f2.`type` = 'sys-category' AND f2.`value` = '1828'
JOIN `index-shop-filters` AS f3 ON f.item = f3.item AND f3.`type` = 'Manufacturer' AND f3.`value` = 'Sony'

这就是我所拥有的。这两种解决方案都应该有效,但效果不佳。希望其他人可以想出一个聪明的、可扩展的答案。

关于MySQL 过滤属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8647535/

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