sql inner join - 多列而不是行

时间:2010-11-06 22:26:25

标签: sql mysql

我的数据库结构:

t_data_fields
id | field_name | field_value

t_data
id | fields_id | name |

t_data中的每一行都有一些与t_data_fields表相关联的行。 我想知道是否可以将额外的field_name和field_value附加到原始的t_data行,而不是连接数据宽度data_fields并为每个数据条目获取多行。

所以,而不是:

id  fields_id name   field_name field_value
2   1         row2   color      black
2   1         row2   brand      DG
2   1         row2   type       shirt

我想要这样的结果:

id  fields_id name   field_name field_value field_name field_value field_name field_value
2   1         row2   color      black       brand      DG          type       shirt

我可以做第一个版本,我只是想知道是否有可能得到我喜欢的结果集

2 个答案:

答案 0 :(得分:1)

您可以每次使用不同的别名重复加入表格,但它不能很好地扩展,并且不灵活。

根据您在此处所做的事情来判断,您更清楚地定义模型/架构会更有意义,因此任何给定的产品都具有称为color的特定属性,{{1 },brandsize等,并允许它们为NULL。然后你有一个非常干净的行,包含你需要的所有数据,并且你正在使用MySQL。不要担心有很多专栏:MySQL有50列很好,尽管它不太人性化(警告:有一个行长度限制因此请注意,如果你有很多长的varchars)。 / p>

假设您需要任意属性,另一个选项是将编码在数据库中的TEXT字段中的数据存储在一个列中(如果您使用此路径,我建议使用JSON)。但是,以这种方式对数据执行数据库操作要困难得多,所以肯定会有权衡。

答案 1 :(得分:0)

嗯,为什么?但不,不能做到。如果要像上一版本一样显示结果,可以在SQL查询后的编程中执行此操作。