求一条sql语句。求求解解。

kstsca 发布于 2012/07/05 09:01
阅读 277
收藏 1

shop(商品) 表

id       shop_name

1        钻戒

 

shop_arr(商品属性)

id    shop_id(商品id)    shop_arr(属性)    shop_value(属性值)

1      1                                1                           ex

2      1                                 2                          ex

......

10      1                                 10                        ex

 

shop_arr 属性=1是切工   2是净度   3是材质  。。。。等等

 

现在要输出表

shop_id    shop_name    shop_cut(切工)    shop_jd(净度)  shop_cz(材质) .........

 

如何处理输出这样的表,效率高点,求条sql语句

加载中
0
被风遗忘
kstsca
kstsca
啊 啊 啊 我怎么没看到
0
lanybass
lanybass

商品 = shop ? 属性 = arr ?

这样的命名,我表示很难理解。。

kstsca
kstsca
我瞎写的,表里不是这么命名的。。希望能这问题的核心,而不是花花草草
0
RegnoiX
RegnoiX
select a.id,s.name decode(a.shop_arr,1, a.shop_arr ,''), decode(a.shop_arr,2, a.shop_arr ,'') .....from  shop_arr a left join  shop s on  a.id = s.id
0
徐小路
徐小路

首先你得明白你要的这个效果有没有专业术语.. 

叫做: 行列转换    你去网上搜下"sql 行列转换" 然后参照别人的代码,很快可以写出.写出来后再回味一下.....

0
徐小路
徐小路

引用来自“Lu.Xu”的答案

首先你得明白你要的这个效果有没有专业术语.. 

叫做: 行列转换    你去网上搜下"sql 行列转换" 然后参照别人的代码,很快可以写出.写出来后再回味一下.....

select t1.id as 商品ID,t1.shop_name as 商品名称,
       max(case when shop_arr = 1 then shop_value end) as 切工,
       max(case when shop_arr = 2 then shop_value end) as 净度, 
       max(case when shop_arr = 3 then shop_value end) as 材质
from shop t1, shop_arr t2
where t1.id = t2.shop_id
group by t1.id,t1.shop_name;

仅供参考.
kstsca
kstsca
谢谢。。。
0
岳静
岳静

引用来自“Lu.Xu”的答案

引用来自“Lu.Xu”的答案

首先你得明白你要的这个效果有没有专业术语.. 

叫做: 行列转换    你去网上搜下"sql 行列转换" 然后参照别人的代码,很快可以写出.写出来后再回味一下.....

select t1.id as 商品ID,t1.shop_name as 商品名称,
       max(case when shop_arr = 1 then shop_value end) as 切工,
       max(case when shop_arr = 2 then shop_value end) as 净度, 
       max(case when shop_arr = 3 then shop_value end) as 材质
from shop t1, shop_arr t2
where t1.id = t2.shop_id
group by t1.id,t1.shop_name;

仅供参考.
在数据库sql方面尽量不要用关联查询,关联查询的效率往往是比较低的
Y-QTCe
Y-QTCe
Databases are born to join
0
mark35
mark35

引用来自“Cactus_牛牛”的答案

引用来自“Lu.Xu”的答案

引用来自“Lu.Xu”的答案

首先你得明白你要的这个效果有没有专业术语.. 

叫做: 行列转换    你去网上搜下"sql 行列转换" 然后参照别人的代码,很快可以写出.写出来后再回味一下.....

select t1.id as 商品ID,t1.shop_name as 商品名称,
       max(case when shop_arr = 1 then shop_value end) as 切工,
       max(case when shop_arr = 2 then shop_value end) as 净度, 
       max(case when shop_arr = 3 then shop_value end) as 材质
from shop t1, shop_arr t2
where t1.id = t2.shop_id
group by t1.id,t1.shop_name;

仅供参考.
在数据库sql方面尽量不要用关联查询,关联查询的效率往往是比较低的
那是因为mysql太垃圾
0
kstsca
kstsca
那你们看看这个  我感觉 基本无解了 http://www.oschina.net/question/347763_59912
返回顶部
顶部