SQL查询:数组在数组中的位置
我在数据库中得到了示例数据:SQL查询:数组在数组中的位置,sql,arrays,filtering,Sql,Arrays,Filtering,我在数据库中得到了示例数据: id (int) name (varchar) parts (varchar) 1 some_element wheel, bearing, hinge, servo 2 another_element bearing, servo, lift 3 third_element motor, wire 我想按部分筛选结果。例如
id (int) name (varchar) parts (varchar)
1 some_element wheel, bearing, hinge, servo
2 another_element bearing, servo, lift
3 third_element motor, wire
我想按部分筛选结果。例如:
我正在键入车轮,伺服-无结果
我正在键入车轮、轴承、伺服、铰链-返回一些元素记录
我正在键入轴承、伺服、提升、车轮、轴承、铰链-它返回一些\u元素和另一个\u元素
如何构造SQL查询?是否有其他数据类型比“零件”字段更好?进行一些规范化,以便您可以更轻松地编写查询,并且不会出现此类异常 您需要另一种结构,如:
元素
表
+----+---------------+
| id | name |
+----+---------------+
| 1 | some_element |
+----+---------------+
| 2 | another_elem |
+----+---------------+
| 3 | third_elem |
+----+---------------+
+----+----------+
| id | name |
+----+----------+
| 1 | wheel |
+----+----------+
| 2 | bearing |
+----+----------+
| 3 | hinge |
+----+----------+
| 4 | servo |
+----+----------+
etc..
部分
表
+----+---------------+
| id | name |
+----+---------------+
| 1 | some_element |
+----+---------------+
| 2 | another_elem |
+----+---------------+
| 3 | third_elem |
+----+---------------+
+----+----------+
| id | name |
+----+----------+
| 1 | wheel |
+----+----------+
| 2 | bearing |
+----+----------+
| 3 | hinge |
+----+----------+
| 4 | servo |
+----+----------+
etc..
另一个,例如元素\u部分
,通过m:n关系连接其他两个部分
+----+---------+---------+
| id | elem_id | part_id |
+----+----------+--------+
| 1 | 1 | 1 |
+----+---------+---------+
| 2 | 1 | 2 |
+----+---------+---------+
| 3 | 1 | 3 |
+----+---------+---------+
| 4 | 2 | 3 |
+----+---------+---------+
| 5 | 2 | 4 |
+----+---------+---------+
etc..
现在,您可以编写一个查询,例如,包含(或需要)wheel
和servo
(调整问题的公认答案)的过滤器元素:
你需要规范化你的数据。你用的是什么关系数据库?很简单!谢谢:)嗯,“更简单的查询编写”部分有点谎言,当然你可以做一些正则表达式模式匹配魔术(比如
比如),但这只是掩盖了问题。