我是穷人,没有分供上,但希望大家也帮忙看看..先给大家介绍一下情况产品表
产品颜色表
产品图片表
产品表一个颜色字段,值格式是“1,2,3,4,5”,值是产品颜色表的ID(因为一个产品,可以勾选一个或多个颜色);产品图片表是关联产品ID和产品系列颜色表ID;也就是一个产品对应多个颜色,一个颜色对应多个图片;但那个颜色是要重复使用;现在在查询产品的时候,用了两个For循环才出的了结果数据;大神们肯定也觉得太不理想了;
这情况需要用怎么样的查询结构,或者表结构要怎么修改;mssql表结构sql语句

解决方案 »

  1.   

    你把颜色单独出来一个表,然后存放产品ID和颜色ID,用于关联产品表和颜色表,图片那个也是这样,也就是一共5个表
      

  2.   


    这是一个方法,但是在查询产品的关联颜色的时候,那不是有很多重复的数据?还有有什么其他查询方法?目前我没有其他方法,另外,其实这种方法的冗余度反而是最低的,如果非要说重复,那只有那两个关系表重复而已,主表的信息不会有重复斑竹,不如我把情况说细一点,你在指导我一下,因为这次一定要按正确的方法修改好,速度上的东西挺重要的!表代替名
    产品表:Product  缩略字段:ID,Name产品颜色:ProductColor  缩略字段:ID,ProID,ColorID产品图片:ProductIMG  缩略字段:ID,ProID,ColorID,Url按照你的方法我这么查询的:select a.ID,a.Name,b.ProID,b.ColorID,c.Url from Product a 
    left join ProductColor b on b.ProID=a.ID
    left join ProductIMG c on c.ProID=a.ID and c.ColorID=b.ColorID
    假如一个产品有5个色,一个色有3-4个图片的查询结果:
    2 Cool Color TPU Rubber Silicone Plastic Soft Back Case for Iphone 5C 2 2 20130824110123_IMG_5167.jpg
    2 Cool Color TPU Rubber Silicone Plastic Soft Back Case for Iphone 5C 2 2 2013926153229_Banner_List_Bg.png
    2 Cool Color TPU Rubber Silicone Plastic Soft Back Case for Iphone 5C 2 2 2013926153229_Banner_List_Bg.png
    2 Cool Color TPU Rubber Silicone Plastic Soft Back Case for Iphone 5C 2 3 2013926153229_Banner_List_Bg.png
    2 Cool Color TPU Rubber Silicone Plastic Soft Back Case for Iphone 5C 2 3 2013926153229_Banner_List_Bg.png
    2 Cool Color TPU Rubber Silicone Plastic Soft Back Case for Iphone 5C 2 3 2013926153229_Banner_List_Bg.png
    2 Cool Color TPU Rubber Silicone Plastic Soft Back Case for Iphone 5C 2 3 2013926153229_Banner_List_Bg.png
    2 Cool Color TPU Rubber Silicone Plastic Soft Back Case for Iphone 5C 2 3 2013926153229_Banner_List_Bg.png
    2 Cool Color TPU Rubber Silicone Plastic Soft Back Case for Iphone 5C 2 4 2013926153229_Banner_List_Bg.png
    2 Cool Color TPU Rubber Silicone Plastic Soft Back Case for Iphone 5C 2 4 2013926153229_Banner_List_Bg.png
    2 Cool Color TPU Rubber Silicone Plastic Soft Back Case for Iphone 5C 2 4 2013926153229_Banner_List_Bg.png
    2 Cool Color TPU Rubber Silicone Plastic Soft Back Case for Iphone 5C 2 4 2013926153229_Banner_List_Bg.png
    2 Cool Color TPU Rubber Silicone Plastic Soft Back Case for Iphone 5C 2 4 2013926153229_Banner_List_Bg.png
    2 Cool Color TPU Rubber Silicone Plastic Soft Back Case for Iphone 5C 2 5 2013926153229_Banner_List_Bg.png
    2 Cool Color TPU Rubber Silicone Plastic Soft Back Case for Iphone 5C 2 5 2013926153229_Banner_List_Bg.png
    2 Cool Color TPU Rubber Silicone Plastic Soft Back Case for Iphone 5C 2 5 2013926153229_Banner_List_Bg.png
    2 Cool Color TPU Rubber Silicone Plastic Soft Back Case for Iphone 5C 2 5 2013926153229_Banner_List_Bg.png
    2 Cool Color TPU Rubber Silicone Plastic Soft Back Case for Iphone 5C 2 5 2013926153229_Banner_List_Bg.png一个产品有这么多重复的数据~~
    我这个查询有没有问题呢?
      

  3.   

    再加一个颜色表,把原有的产品图片:ProductIMG  缩略字段:ID,ProID,ColorID,Url拆开,
    ProductIMG   ID,PROID,COLORID
    IMG Colorid,Url
    select a.ID,a.Name,b.ProID,d.ColorID,d.Url from Product a 
    left join ProductColor b on b.ProID=a.ID
    left join ProductIMG c on c.ProID=a.ID and c.ColorID=b.ColorID
    left join IMG D ON C.COLORID=D.COLORID但是如果你一个产品有5个颜色,假设每个颜色有4个图片,那一个产品有5*4=20条数据是正确的,问题就是你到时候如何展示而已