-3

我正在创建一个名为 company_Registration 的表,其中存储

company_id  
company_name  
product_escription  

---使用php和mysql---

我希望 product_description 列应该采用多个值,例如 IC 芯片、电机

并且应该用逗号分隔..

我知道如何将 .csv 文件导入数据库并且工作正常..

但是,我想当用户在网页中搜索时 product_description 列值应该被视为用逗号分隔如何实现?

4

1 回答 1

1

虽然可以在逗号分隔的列表上搜索匹配项(例如使用 FIND_IN_SET),但读取代码很讨厌,效率低下,会妨碍引用完整性,并且通常是一个非常糟糕的主意(尽管不如存储 php php 字段中的序列化数组)。

至少创建一个额外的描述表,每个公司的每个描述都有 1 行。

可能更好的是有一个可能的描述表,然后是一个链接表,每个公司有很多行,每个描述一个。链接表行只包含公司的唯一 ID 和描述的唯一 ID。

例如,简单的表

公司表

公司编号

公司名称

产品表

产品编号

产品描述

公司产品链接

公司编号

产品编号

然后找到所有销售' IC芯片'或'音响系统'的公司:-

SELECT a.CompanyId, a.CompanyName, COUNT(c.ProductId)
FROM Company a
INNER JOIN CompanyProductLink b ON a.CompanyId = b.CompanyId
INNER JOIN ProductTable c ON b.ProductId = c.ProductId AND c.ProductDescription IN ('IC chips','sound system')
GROUP BY a.CompanyId, a.CompanyName

如果您想要只销售一种“ IC 芯片”或“音响系统”的公司:-

SELECT a.CompanyId, a.CompanyName, COUNT(c.ProductId) AS ProductCount
FROM Company a
LEFT OUTER JOIN CompanyProductLink b ON a.CompanyId = b.CompanyId
LEFT OUTER JOIN ProductTable c ON b.ProductId = c.ProductId AND c.ProductDescription IN ('IC chips','sound system')
GROUP BY a.CompanyId, a.CompanyName
HAVING ProductCount = 1
于 2013-07-03T10:16:19.917 回答