从逗号分隔的值中查询结果并查询要显示的每个值
Posted
技术标签:
【中文标题】从逗号分隔的值中查询结果并查询要显示的每个值【英文标题】:query results from comma seperated values and query for each value to display 【发布时间】:2014-01-13 22:30:15 【问题描述】:我有一个包含 ID、日期和逗号分隔字段的表格。 例如像这样的值:
id date options
1 2013-12-26 3006,3009,4010
2 2013-12-25 3002,3001,5090
3 2013-12-24 2909,1012,6089
4 2013-12-23 3001,4009,5008
查询特定日期后,例如2013-12-26 我得到的结果是 3006,3009,4010 现在我有另一个带有这些个人编号的表 2。带有附加字段。
基于这些结果,我需要创建一个表单,分别显示这些 3006,3009,4010 的结果..
如: 3006 表中具有此值的所有行的内容 2 值可能是固定的或表单的某些输入字段,因此如果我在提交后在此创建的表单中输入值,我应该得到下一个。即3009等。
我能够显示这些编号的所有结果。在一起,但我需要让他们分开。所以我得到 3006 提交表格的结果 3009 提交表格的结果 4010 提交表格的结果。等等
【问题讨论】:
永远,永远,永远不要在一列中存储多个值! 第 1 步:规范化您的数据库。 如果您知道如何从表 2 中获取数据。我假设您是根据存储选项的标识符字段来执行此操作的?在您的查询中,只需按选项添加排序 WHERE ID2 IN (3006,3009,4010) 给了我综合结果 在mysql中你可以使用FIND_IN_SET()函数来加入这些表。 【参考方案1】:你可以使用FIND_IN_SET()函数。
试试这个:
SELECT a.id, a.date, a.options, b.*
FROM tableA a
INNER JOIN tableB a ON FIND_IN_SET(b.id, a.options)
注意:在我看来,将多个 ID 存储在一条记录中并不是一个好的表格设计。 不要设计这种类型的表格。尝试创建映射表,其中两个表 ID 都已映射。尝试创建 1NF 或以上适用的数据库
多对多关系示例:
【讨论】:
可以,不代表就应该! @Strawberry 我已经在我的答案中添加了不应用这种方法的内容。但是对于这个特定的问题,我已经给出了解决方案,我也希望 OP 重新设计他的数据库结构 实际上这些逗号分隔的值是表2中的ID。这个表2有多个具有相同ID的行,这意味着表2中有10到15行ID为3006等等。跨度> @user3136074 然后您可以在表之间使用many-to-many
关系并创建一个映射表,该表将具有tableA
的id
列和tableB
的id
列
表 1 是为用户的当前日期临时创建的,他从表单的下拉列表中选择多个选项,然后将这些选项插入表 1 中,并在开头以逗号分隔值那天,当经理有空之后,他开始为所选选项填充数据,他应该填充选项然后输入值,在这里我被困在一次获取一个特定选项,而不是页面应该显示 NEXT 和以此类推。以上是关于从逗号分隔的值中查询结果并查询要显示的每个值的主要内容,如果未能解决你的问题,请参考以下文章