我在数据库中有两个表parts
, 和products
。我在products
表中有一个带有 id 字符串的列(逗号分隔)。这些 id 与部件表的 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 中做到这一点,从部件表中创建一个结果数组,使用它来搜索产品表中的 id,然后使用这些结果从部件表中获取行数据(再次)。效率不是很高。
我也试过这个,但我显然想在这里比较两个数组,不知道应该怎么做。
SELECT * FROM `products` WHERE
CONCAT(',', description, ',')
IN (SELECT `id` FROM `parts` WHERE `description` LIKE '%{$search}%')
有人可以帮忙吗?