gpt4 book ai didi

php - 一品多品——PHP MySQL

转载 作者:可可西里 更新时间:2023-11-01 07:49:12 25 4
gpt4 key购买 nike

我有一张表 products (id, barcode, catid, name, description, ...) 我被要求让一些产品可以分配给多个类别。最明显的解决方案是将 catid 从 INT 更改为具有分隔值的 VARCHAR,即 1、2、5,其中 1、2 和 5 是各种类别。

现在哪个 SQL 语句可以为我完成这项工作?我想到了 find_in_set,但我认为它的作用恰恰相反。

最佳答案

最明显的解决方案是创建一个“交叉表”,您可以在其中进行多对多分配(因为一个类别中可以有多个产品,一个产品可以有多个类别)。该表将如下所示:

product_id | category_id

然后您可以使用此查询:

SELECT 
*
FROM
(product JOIN product_has_category ON product.id = product_has_category.product_id)
JOIN category ON product_has_category.category_id = category.id

您甚至可以使用普通的 WHERE 和 `ORDER BY 等。

编辑:修正了我查询中的一个重大错误,抱歉!


如果您无法更改数据库,您可能想试试这个:

SELECT 
*
FROM
category, product
WHERE
product.id = ?? AND FIND_IN_SET(category.id, product.catid) > 0 GROUP BY product.id

警告:这是一个远景,我还没有测试过这个,但是因为 FIND_IN_SET 会搜索一个逗号分隔的列表,所以它可以工作。

关于php - 一品多品——PHP MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6680857/

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