根据类别显示数据库中的文章

时间:2016-05-09 15:02:35

标签: php mysql sql

我有一个数据库,其中有一个表来存储我网站的产品,该表的特定产品所属的所有类别都有以下列: Column of the table for products

在进行查询以获取第一行所属的类别后,信息存储在一个类似于$productDetails->ProductCategoryID的对象中,内容如下:dinner,casual,kids

现在,我的问题是如何使用SQL命令SELECT通过PHP使所有产品至少具有一个共同类别。

请帮我解决这个问题。对不起,我不是母语为英语的人

1 个答案:

答案 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列的结构,那么所有这些都是有意义的。)