MySQL:使用搜索结果(比如%search%)来匹配数据库中另一个表中的id

时间:2013-06-23 06:14:08

标签: php mysql

好的,这里有很多事情发生在我身上......

我在数据库,零件和产品中有两个表, 我在products表中有一个列,其中包含id(逗号分隔)的字符串,这些id是parts表的匹配id。

**parts**

ID  |  description (I'm searching this part)
-------------------------------
1   |  some text here
2   |  some different text here
3   |  ect...

**products**

ID  |  parts-list
--------------------------------
1   |  1,2,3
2   |  2,3
3   |  1,2

我真的在这个问题上苦苦寻求SQL查询。 我已完成第一部分,从部件表中获取了id

SELECT * FROM parts WHERE description LIKE'%{$ search}%'

最大的问题是描述栏的逗号分隔结构。

显然我可以在PHP中创建它,从parts表创建一个结果数组,用它来搜索products表中的id,然后使用这些结果从parts表中获取行数据(再次) 。效率不高。

我也尝试了这个,但我显然试图在这里比较两个数组,不知道应该怎么做。

SELECT * FROM `products` WHERE 
CONCAT(',', description, ',') 
IN (SELECT `id` FROM `parts` WHERE `description` LIKE '%{$search}%')

有人可以帮忙吗?

感谢。

1 个答案:

答案 0 :(得分:0)

我可能会尝试LOCATE()SUBSTR()的组合。我主要在MSSQL工作,CHARINDEX()我觉得它像MySQL的LOCATE()。它一定会很混乱。在parts-list字段中是否有可变数量的元素?