各位高手请赐教;有一个表Pen 有二列:
ID    Name1     钢笔
3     水笔
4     圆珠笔
另个颜色 表Color  有二列
ID      COLOR1    COLOR21       红色      黑色
4       黄色      红色现在想根据同一个笔不同的颜色列成一行行,如上面的就能列成:
Name    color
钢笔    红色
钢笔    黑色
圆珠笔  黄色
圆珠笔  红色求各位在侠这个SQL如何写?十分感谢您的帮助!

解决方案 »

  1.   


    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;
      

  2.   

    只有2种颜色吗
    直接union allselect 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
    ;
      

  3.   

    数据库环境输不了中文,用拼音来表示好了..
    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
      

  4.   

    你的颜色字段是不是
    color1,color2...color99
    这么排列的还是怎么的也就是你的数据库结构是怎么样的
      

  5.   

    回复renkuan719
     
    你的颜色字段是不是
    color1,color2...color99
    是的,字段是这样排列的。
      

  6.   

    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