色系表
色系id   色系名称
csid    csvalue
1       红
2       黑颜色表
色系id  颜色id  颜色名称
csid   ysid   ysvalue
1      1      国旗红
1      2      明亮红
2      3      金刚黑服装表(wysid,nysid均为颜色表的ysid值)
服装id  服装面料颜色 服装里料颜色   
fzid   wysid      nysid
1      1          2
2      2          1
3      1          3如何通过查询得出以下结果
服装id  服装面料颜色      服装里料颜色   
fzid   wysid          nysid
1      国旗红(红色系)   明亮红(红色系)
2      明亮红(红色系)   国旗红(红色系)
3      国旗红(红色系)   金刚黑(黑色系) 

解决方案 »

  1.   


    select * from (((服装表 a left join 颜色表 b
    on a.wysid=b.ysid)
    left join  颜色表 b1 
    on a.nysid=b1.ysid)
    left join 色系表 c
    on b.csid=c.csid)
    left join 色系表 c1
    on b1.csid=c1.csid
      

  2.   

    select fzid,
    (select concat(颜色名称,'(',csvalue,'色系)') from 颜色表,系表 where 颜色表.csid=系表.csid and ysid=wysid) as 服装面料颜色,
    (select concat(颜色名称,'(',csvalue,'色系)') from 颜色表,系表 where 颜色表.csid=系表.csid and ysid=nysid) as 服装里料颜色
    from 服装表 a
      

  3.   

    在连接字段上建立索引SELECT a.fzid,CONCAT(b.ysvalue,'(',c.csvalue,'色系)') AS 服装面料颜色      ,
    CONCAT(b1.ysvalue,'(',c1.csvalue,'色系)') AS 服装里料颜色
     FROM 服装表 a LEFT JOIN 颜色表 b
     ON a.wysid=b.ysid
     LEFT JOIN  颜色表 b1 
     ON a.nysid=b1.ysid
     LEFT JOIN 色系表 c
     ON b.csid=c.csid
     LEFT JOIN 色系表 c1
     ON b1.csid=c1.csid