提问人:A.Steer 提问时间:12/14/2022 最后编辑:danronmoonA.Steer 更新时间:12/19/2022 访问量:45
链接两个包含管道分隔字符的MySQL表是唯一的物理链接,这是相对位置
Linking two MySQL tables containing pipe delimited characters were the only physical link is there relative location
问:
我有两个MYSQL表,产品和价格。这两个表都是通过 Web 表单填充的,该表单为最终用户选择的选项创建以管道分隔的值。此过程和初始输出无法更改。
因此,如果 User1 选择 3 个产品,他们将有一个包含 3 个产品和 2 个管道的字符串。如果用户 2 选择 7 个产品,他们将有一个包含 7 个产品和 6 个管道的字符串。
然后,单独的价格表将为用户选择的每个项目的价格提供相应的管道分隔值。
我想将价格归因于产品,但唯一的链接值是管道分隔字符串中的位置,其长度根据所选项目的数量而波动。
产品表
帐户 ID | 选项 |
---|---|
S001型 | 猫|狗|奶牛|羊 |
S002型 | 猫|狗|奶牛|羊 |
S003型 | 猫|狗|羊 |
S004型 | 猫|狗|羊 |
S005型 | 猫|狗|羊 |
S006型 | 猫|狗|奶牛|羊 |
S007系列 | 猫|狗|奶牛|猪|山羊|海鸥|羊 |
S008型 | 鸭 |
S009型 | 猪|山羊|海鸥|羊 |
S010系列 | 猫|狗|奶牛|绵羊|密封 |
价格表
帐户 ID | 选项折扣 |
---|---|
S001型 | -40.00|0.00|-40.00|0.00 |
S002型 | -40.00|0.00|-40.00|0.00 |
S003型 | -40.00|0.00|0.00 |
S004型 | -5.50|0.00|0.00 |
S005型 | -40.00|0.00|0.00 |
S006型 | -40.00|0.00|0.00 |
S007系列 | -15.00|0.00|-15.00|-15.00|0.00|-15.00|0.00 |
S008型 | -13.85 |
S009型 | -33.71|0.00|-33.71|0.00 |
S010系列 | -40.00|0.00|-40.00|0.00 |
因此,使用上面的表格,我需要说:
- s001,Cat 为 -40,Cow 为 -40
- s005,绵羊(位置 3)为 0.00
- s006,绵羊(位置 4)为 0.00
- s008,鸭子是-13.85
对于每个帐户,每个产品的位置可以位于不同的位置,如 S001、S005、S007 的绵羊产品所示,它分别出现在位置 4、3 和 7。
目前有 13 种单独的“动物”产品可供用户选择,目前在数据库中,存在大约 50 种产品字符串变体。
目前,我需要根据此标准报告大约 2,500 行记录,但 DB 表包含大约 190 万条记录(其余记录具有我可以处理的一致性级别),其余 2,500 行具有奇怪的格式。
使用 MySQL 中的substring_index,我可以根据分隔符拆分字符串,然后为每个单独的数据项提供一列:
产品
case when 0<= LENGTH(options) - LENGTH(REPLACE(options, '|', '')) then
SUBSTRING_INDEX(SUBSTRING_INDEX(options, '|', 1), '|', -1) ELSE null end as op1
帐户 ID | OP1 | OP2 | OP3 | OP4 |
---|---|---|---|---|
S001型 | 猫 | 狗 | 牛 | 羊 |
我还可以在价格表上执行相同的功能,然后将每个数据项作为单独的列提供。
我遇到的问题是我无法根据其位置将价格项目归因于产品项目的描述
我确实可以选择使用 SSIS 对数据进行转换,如果该语言的选项可用,我还可以将数据保存到 SQL 服务器数据库。
答: 暂无答案
评论