我现在有这个说法......SQL服务器:集团内连接来单独列
SELECT *
FROM stock AS s
INNER JOIN stock_attributes AS sa ON sa.stock_code = s.stock_code
此输出这样的信息...
| stock_code | attribute name | attribute value |
|------------|----------------|-----------------|
| ABC01 | color | red |
| ABC01 | size | small |
| ABC01 | price | 10.0 |
| XYZ99 | color | blue |
| XYZ99 | size | large |
| XYZ99 | price | 50.0 |
但是我希望它看起来像这样
| stock_code | color | size | price |
|------------|----------------|-----------------|------------------|
| ABC01 | red | small | 10.0 |
| XYZ99 | blue | large | 50.0 |
我发现许多这样的例子对SO,但他们似乎是非常准确的复杂的例子,我确信一个函数会存在于我想要达到的上面。
目前我在多个INNER JOIN
s中使用SELECT
来实现这个功能,以选择属性名称,但是这需要在创建新属性名称时手动修改。
非常感谢提前!
这就是为什么属性表是一个坏主意,它们很难查询。你真正需要做的是正确地重新检查你的数据库。 EAV表只适用于你在deagin时间无法预测的事情,如果你需要大量的信息,你应该根本不使用真实的数据库。他们不仅难以查询,他们可能是性能杀手。 – HLGEM 2014-10-30 14:15:44
在谷歌上查看:旋转表。 – 2014-10-30 14:16:28
*但是这需要在创建新属性名称时手动修改*您可以对此做很多事情。这是实体属性值设计的成本之一。你可能需要做动态查询,或者在添加属性时做代码生成 – 2014-10-30 14:17:02