MySQL - 将名称和值转换为列

时间:2014-11-08 14:02:37

标签: mysql sql

我有以下2个表格:

参数表:ID, EntityType, ParamName, ParamType

实体表:ID, Type, Name, ParamID, StringValue, NumberValue, DateValue

  • 实体。ParamIDParameters.ID
  • 相关联
  • 实体。Type与参数。EntityType
  • 相关联
  • StringValueNumberValueDateValue包含基于Parameters.Type(1,2,3)的数据

查询结果应包含:

Entity.ID, Entity.Name, Parameters.ParamName1, Parameters.ParamName2... Parameters.ParamNameX

ParamNameX的内容与上述相关性相同。如何将参数名称转换为列及其值转换为这些列的数据?我甚至不知道从哪里开始。

上述说明:例如,实体X可以是entitytype 1和entitytype 2.参数表包含类型1和2的参数名称,但我需要获取(例如)实体类型1的参数名称。

1 个答案:

答案 0 :(得分:0)

您要归档的是EAV(实体属性值)模型。

但是你设置表的方式是错误的。

每种类型都应该有一张表。 所以entity_string,entity_number,entity_date和一个主表实体,它包含id和一些常规的东西,如create_time,update_time等。

看看magento以及他们如何设置表格。像这样,要求提供数据和组织数据要容易得多。