我有一个数据库,其中有一个表来存储我网站的产品,该表的特定产品所属的所有类别都有以下列:
在进行查询以获取第一行所属的类别后,信息存储在一个类似于$productDetails->ProductCategoryID
的对象中,内容如下:dinner,casual,kids
现在,我的问题是如何使用SQL命令SELECT
通过PHP
使所有产品至少具有一个共同类别。
请帮我解决这个问题。对不起,我不是母语为英语的人
答案 0 :(得分:1)
如果我理解,你有一个列,其中包含一个字符串,表示用逗号分隔的产品类别。在这种情况下,您必须在列ProductCategoryID
上执行子字符串函数,这始终是不鼓励的。
我建议您(而不是使用列ProductTable.ProductCategoryID
)创建包含ProductsCategories
列的链接表ProductID, CategoryID
。
----------------------
| ProductsCategories |
----------------------
| ProductID |
| CategoryID |
----------------------
通过这种方式,您可以使用更高效的QUERY,如下所示:
SELECT DISTINCT ProductTable.*
FROM ProductTable
INNER JOIN ProductsCategories ON (ProductsCategories.ProductID = ProductTable.ProductID)
WHERE CategoryID IN
(
SELECT CategoryID
FROM ProductsCategories
WHERE ProductID != ProductTable.ProductID
)
;
当然,如果我以正确的方式理解ProductCategoryID
列的结构,那么所有这些都是有意义的。)