请教下大家。比如一个表的字段属性如图:
每个产品有三个属性。那么一般在循环读取商品信息的时候 也是 商品1的属性展示完以后循环商品2依次往后。但是现在 我要做个商品的对比功能: 比如我选择商品1和商品3进行属性对比。展示效果如图:
这个sql行列转换要怎么写呢?
每个产品有三个属性。那么一般在循环读取商品信息的时候 也是 商品1的属性展示完以后循环商品2依次往后。但是现在 我要做个商品的对比功能: 比如我选择商品1和商品3进行属性对比。展示效果如图:
这个sql行列转换要怎么写呢?
select '价格' as '属性', sum(if(产品名称='nokia', 价格, 0)) as nokia, sum(if(产品名称='sanxing', 价格, 0)) as sanxing
union
select '体积' as '属性', sum(if(产品名称='nokia', 体积, 0)) as nokia, sum(if(产品名称='sanxing', 体积, 0)) as sanxing
union
select '厚度' as '属性', sum(if(产品名称='nokia', 厚度, 0)) as nokia, sum(if(产品名称='sanxing', 厚度, 0)) as sanxing
那如果不用sql语句处理。是程序中进行得到的数组数据 进行键和值的交换?
这个只是“伪代码”而已,你自己把字段名和表名替换上去:select '价格这个字段的字段名' as '属性', sum(if(产品名称这个字段的字段名='nokia', 价格这个字段的字段名, 0)) as nokia, sum(if(产品名称这个字段的字段名='sanxing', 价格这个字段的字段名, 0)) as sanxing
from 你的表
union
select '体积这个字段的字段名' as '属性', sum(if(产品名称这个字段的字段名='nokia', 体积这个字段的字段名, 0)) as nokia, sum(if(产品名称这个字段的字段名='sanxing', 体积这个字段的字段名, 0)) as sanxing
from 你的表
union
select '厚度这个字段的字段名' as '属性', sum(if(产品名称这个字段的字段名='nokia', 厚度这个字段的字段名, 0)) as nokia, sum(if(产品名称这个字段的字段名='sanxing', 厚度这个字段的字段名, 0)) as sanxing
from 你的表
贴建表及插入记录的SQL,及要求结果出来看看