好的,这里有很多事情发生在我身上......
我在数据库,零件和产品中有两个表, 我在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}%')
有人可以帮忙吗?
感谢。
答案 0 :(得分:0)
我可能会尝试LOCATE()
和SUBSTR()
的组合。我主要在MSSQL工作,CHARINDEX()
我觉得它像MySQL的LOCATE()
。它一定会很混乱。在parts-list字段中是否有可变数量的元素?