我是穷人,没有分供上,但希望大家也帮忙看看..先给大家介绍一下情况产品表
产品颜色表
产品图片表
产品表一个颜色字段,值格式是“1,2,3,4,5”,值是产品颜色表的ID(因为一个产品,可以勾选一个或多个颜色);产品图片表是关联产品ID和产品系列颜色表ID;也就是一个产品对应多个颜色,一个颜色对应多个图片;但那个颜色是要重复使用;现在在查询产品的时候,用了两个For循环才出的了结果数据;大神们肯定也觉得太不理想了;
这情况需要用怎么样的查询结构,或者表结构要怎么修改;mssql表结构sql语句
产品颜色表
产品图片表
产品表一个颜色字段,值格式是“1,2,3,4,5”,值是产品颜色表的ID(因为一个产品,可以勾选一个或多个颜色);产品图片表是关联产品ID和产品系列颜色表ID;也就是一个产品对应多个颜色,一个颜色对应多个图片;但那个颜色是要重复使用;现在在查询产品的时候,用了两个For循环才出的了结果数据;大神们肯定也觉得太不理想了;
这情况需要用怎么样的查询结构,或者表结构要怎么修改;mssql表结构sql语句
这是一个方法,但是在查询产品的关联颜色的时候,那不是有很多重复的数据?还有有什么其他查询方法?目前我没有其他方法,另外,其实这种方法的冗余度反而是最低的,如果非要说重复,那只有那两个关系表重复而已,主表的信息不会有重复斑竹,不如我把情况说细一点,你在指导我一下,因为这次一定要按正确的方法修改好,速度上的东西挺重要的!表代替名
产品表: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一个产品有这么多重复的数据~~
我这个查询有没有问题呢?
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条数据是正确的,问题就是你到时候如何展示而已