gpt4 book ai didi

mysql - 通过分割字段连接表

转载 作者:行者123 更新时间:2023-11-29 22:38:13 26 4
gpt4 key购买 nike

我有两张 table ;- 项目表 - 包含有关产品的基本信息:名称、产品的基本价格,以及产品是否具有任何属性 - 将按以下格式指定它们:属性的选项 ID - 属性的值 ID。 (选项的示例是颜色或尺寸,值的示例是红色)。例如:

项目表

id  | name  |attributes |price
1 | a |13-49 | 5.00
2 | b |5-101,13-77| 5.00
3 | c | | 5.00
4 | b |5-102,13-70| 5.00
  • 第二个表包含分配给产品的每个选项和值(id_option 和 id_value - 含义与上表中相同),以及属性值是否更改产品基本价格(更改)以及更改内容的信息应该是(值)。

项目属性

id  |id_item|id_option|id_value |change | value  
1 | 1 | 13 | 49 | 1 |10.00
2 | 2 | 5 | 101 | 1 | 5.50
3 | 2 | 13 | 77 | 1 | 0.50
4 | 4 | 5 | 102 | 0 | 0
5 | 4 | 13 | 70 | 1 | 1.00

我想要一个与第一个表相同的表,但价格根据 items_attributes 表中记录的更改计算。

id  | name  |attributes | price
1 | a |13-49 | 15.00
2 | b |5-101,13-77| 11.00
3 | c | | 5.00
4 | b |5-102,13-70| 6.00

如何从 items 表中拆分属性并使用它来连接两个表?

最佳答案

您可以使用 find_in_set() 通过联接来完成此操作:

select i.id, i.name, i.attributes,
i.price + coalesce(sum(ia.value)) as price
from items i left join
items_attributes ia
on find_in_set(concat(ia.id_option, '-', ia.id_attribute), i.attributes) > 0
group by i.id;

不幸的是,您无法使用索引提高此查询的性能。为了获得更好的性能,您需要更好的数据结构。

关于mysql - 通过分割字段连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29469958/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com