MySQL-将名称和值转换为列

MySQL-将名称和值转换为列,mysql,sql,Mysql,Sql,我有以下两个表格: 参数表:ID,EntityType,ParamName,ParamType 实体表:ID,Type,Name,ParamID,StringValue,NumberValue,DateValue 实体。ParamID链接到Parameters.ID 实体。Type链接到参数。EntityType StringValue,NumberValue,DateValue包含基于参数的数据。键入(1,2,3) 查询结果应包含: Entity.ID, Entity.Name, Para

我有以下两个表格:

参数表:
ID,EntityType,ParamName,ParamType

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

  • 实体。
    ParamID
    链接到
    Parameters.ID
  • 实体。
    Type
    链接到参数。
    EntityType
  • StringValue
    NumberValue
    DateValue
    包含基于
    参数的数据。键入
    (1,2,3)
查询结果应包含:

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


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

您试图归档的是EAV(实体属性值)模型

但是你摆桌子的方式是错误的

每种类型都应该有一个表。 所以实体字符串、实体编号、实体日期和一个主表实体,其中包含id和一些常规内容,如创建时间、更新时间等


看看magento和他们是如何摆桌子的。像这样,查询和组织数据就容易多了。

我想你需要一个动态轴心:请阅读我问题中的其他信息。我的需求有点不同,我迷路了……连接两个表并检索包含所有必需参数的行不是问题。但是您需要将行转换为列,并且您不知道将有多少列。这叫做动态轴心。我编辑了我的问题。我这样做的原因是,该实体可以有多个实体类型,因此参数表具有所有实体类型的所有可用参数,但我只需要获取所请求实体类型的相关参数。例如,实体X可以是entitytype 1和entitytype 2。parameters表包含类型1和2的paramname,但现在我只需要获取实体类型1的paramname。