我正在创建一个名为 company_Registration 的表,其中存储
company_id
company_name
product_escription
---使用php和mysql---
我希望 product_description 列应该采用多个值,例如 IC 芯片、电机
并且应该用逗号分隔..
我知道如何将 .csv 文件导入数据库并且工作正常..
但是,我想当用户在网页中搜索时 product_description 列值应该被视为用逗号分隔如何实现?
虽然可以在逗号分隔的列表上搜索匹配项(例如使用 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