这个SQL如何写呢?各位高手请赐教;有一个表Pen 有二列:IDName1钢笔3水笔4圆珠笔另个颜色 表Color有二列IDCO
这个SQL如何写呢?
各位高手请赐教;
有一个表Pen 有二列:
ID Name
1 钢笔
3 水笔
4 圆珠笔
另个颜色 表Color 有二列
ID COLOR1 COLOR2
1 红色 黑色
4 黄色 红色
现在想根据同一个笔不同的颜色列成一行行,如上面的就能列成:
Name color
钢笔 红色
钢笔 黑色
圆珠笔 黄色
圆珠笔 红色
求各位在侠这个SQL如何写?十分感谢您的帮助!
[最优解释]
select Name,color from
(select Name,COLOR1 color,1 col
from Pen,Color
where Pen.ID=Color.ID
union all
select Name,COLOR2,2
from Pen,Color
where Pen.ID=Color.ID)
order by Name desc,col;
[其他解释]
create table t1 (id number,name VARCHAR2(10));
create table t2 (id number,color1 varchar2(10),color2 varchar(10));
insert into t1 values(1,'钢笔');
insert into t1 values(3,'水笔');
insert into t1 values(4,'圆珠笔');
insert into t2 values(1 ,'红色','黑色');
insert into t2 values(4,'黄色','红色');
select t1.name,t.color from t1,
(
select id,color1 as color from T2
UNION
select id,color2 from t2) t where t1.id=t.id;
drop table t1;
drop table t2;
结果显示:
NAME COLOR
---------- ----------
钢笔 黑色
钢笔 红色
圆珠笔 红色
圆珠笔 黄色
4 rows selected
[其他解释]
只有2种颜色吗
直接union all
select Pen,COLOR1 color from Pen a,Color b where a.id=b.id
union all
select Pen,COLOR2 color from Pen a,Color b where a.id=b.id
;
[其他解释]
数据库环境输不了中文,用拼音来表示好了..
WITH pen AS(
SELECT '1'id,'gang bi'NAME FROM dual
UNION ALL
SELECT '3','shui bi' FROM dual
UNION ALL
SELECT '4','yuan zhu bi' FROM dual
),
color AS(
SELECT '1'id,'hong se'color1,'hei se'color2 FROM dual
UNION ALL
SELECT '4','huang se','hong se' FROM dual
)
select pen.NAME,color.color1,color.color2 FROM pen,color WHERE pen.id=color.id
[其他解释]
哦,看错了,入楼上做法即可。
[其他解释]
真的感情各位高手的出手相助,小菜感谢不尽!只是颜色有好几十种,有没有别的方法呢?
[其他解释]
你的颜色字段是不是
color1,color2...color99
这么排列的还是怎么的
也就是你的数据库结构是怎么样的
[其他解释]
回复renkuan719
你的颜色字段是不是
color1,color2...color99
是的,字段是这样排列的。
