gpt4 book ai didi

php - 表中同一字段的多个查询

转载 作者:行者123 更新时间:2023-11-29 02:33:17 25 4
gpt4 key购买 nike

真的希望有人能帮助我,或者至少给我指出正确的方向。我在一个产品网站上工作,它允许访问者使用产品结果旁边的菜单来过滤他们的结果,类似于 www.asos.com 所做的。基本上,他们可以选择产品类型、款式、价格、款式等。每种类型的装配工都有自己的表格和一个将每个值链接到产品表格的引用表格。 EG 有一个

包含产品 key 和所有其他产品信息的产品表颜色表,具有以下字段,Colour_ID,名称带有 productkey、Colour_ID 的 Colourref 表

我正在使用 MySQL 和 PHP。我知道如果访问者从每个过滤器类型中做出一个选择然后显示每个属性的计数,如何查询数据库并显示数据,但我真的希望能够允许他们进行多个选择然后计算每个属性的计数,基于已选择的内容。我已经研究了应该如何完成,并且我已经看到子查询是一个选项,但我担心我需要创建多少个子查询,因为我有 9 个过滤器组,可以有大量的值。目前,数据库中有 1/2 百万种产品,并且随着时间的推移而增加。我正在捕获需要通过 url 查询的值,作为示例

page=1&view=20&product=125,137,147&type=1,3,5&colour=3,9,5&material=187,345

从示例中可以看出,我每次可以有多个值。我尝试使用 AND 编写查询。例如,product = 125 AND product = 137,但这不起作用。

有没有人对执行此操作的最佳方法有任何建议,即使它只是朝着正确的方向前进?

任何帮助将不胜感激

提前致谢

薇薇安

最佳答案

基本上你已经回答了你自己的问题:

SELECT ...
FROM ...
WHERE (product = 125 OR product = 137) AND
(colour = 3 OR colour = 8 OR colour = 5) ...

如果要选择多个产品、颜色等,则需要使用OR 而不是AND。如果您同时想要产品和颜色,则需要在两者之间使用 AND 将它们组合起来。这里不需要子查询。


虽然使用 IN 更容易:

SELECT ...
FROM ...
WHERE product IN (125, 137, 147) AND colour IN (3, 5, 8)

此 SQL 代码的更完整示例:

SELECT p.* 
FROM Products p

LEFT JOIN Colourref cr
ON cr.productkey = p.productkey

LEFT JOIN Colours c
ON c.Colour_ID = cr.Colour_ID

WHERE
p.productkey IN (1, 2, 4)
AND c.Colour_ID IN (1, 2)

这将选择 ID 为 1、2 或 4 且颜色为 1 或 2 的所有产品。

它在 ID 上左连接所需的表,然后过滤所需的值。

关于php - 表中同一字段的多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9343157/

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