假如我来设计
商品属性表(包括编号 商品编号 商品颜色 品牌ID 尺码ID)
品牌表(品牌ID 品牌名称 其他信息)
尺码表(尺码ID,尺码名称 其他信息)查找品牌A的黑色和白色的XL码衣服select 商品属性表.*,品牌表.品牌名称,尺码表.尺码名称 from 商品属性表
left join 品牌表 on 商品属性表.品牌ID = 品牌表.品牌ID
left join 尺码表 on 商品属性表.尺码ID = 尺码表.尺码表ID
商品属性表(包括编号 商品编号 商品颜色 品牌ID 尺码ID)
品牌表(品牌ID 品牌名称 其他信息)
尺码表(尺码ID,尺码名称 其他信息)查找品牌A的黑色和白色的XL码衣服select 商品属性表.*,品牌表.品牌名称,尺码表.尺码名称 from 商品属性表
left join 品牌表 on 商品属性表.品牌ID = 品牌表.品牌ID
left join 尺码表 on 商品属性表.尺码ID = 尺码表.尺码表ID
有些時候,某些商品是沒有顏色或尺碼的,如充值卡類,就沒有存在顏色和尺碼,但存在面額這屬性,可以有面額+商品類別決定SKU的組成。其他以此類推。
(
select *
from 商品属性表
where 属性编号=1
and 属性值编号=1
),t_color as
(
select *
from 商品属性表
where 属性编号=2
and 属性值编号 in (3,4)
),t_size as
(
select *
from 商品属性表
where 属性编号=3
and 属性值编号=3
)
select d.*
from t_brand a
join t_color b on a.商品编号=b.商品编号
join t_size c on a.商品编号=c.商品编号
join 商品表 d on a.商品编号=d.商品编号
left join `goods_attr` b on a.id = b.goods_id
left join `goods_attr` c on a.id = b.goods_id
where b.tid=1 and c.tid=2求更好的查询