假如我来设计
商品属性表(包括编号 商品编号 商品颜色 品牌ID 尺码ID)
品牌表(品牌ID 品牌名称 其他信息)
尺码表(尺码ID,尺码名称 其他信息)查找品牌A的黑色和白色的XL码衣服select 商品属性表.*,品牌表.品牌名称,尺码表.尺码名称 from 商品属性表
left join 品牌表 on 商品属性表.品牌ID = 品牌表.品牌ID 
left join 尺码表 on 商品属性表.尺码ID = 尺码表.尺码表ID

解决方案 »

  1.   

    樓主的商品屬性這樣設計是沒錯的,還缺少的是SKU的描述,如衣服靴子是一個很典型的例子,可以有款式+尺碼+顏色來決定SKU的組成。
    有些時候,某些商品是沒有顏色或尺碼的,如充值卡類,就沒有存在顏色和尺碼,但存在面額這屬性,可以有面額+商品類別決定SKU的組成。其他以此類推。
      

  2.   

    With t_brand as 
    (
    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.商品编号
      

  3.   

    同一样的设计,同样无法解决查询问题目前暂时通过PHP循环生成这样的查询select a.id,a.name from `goods` a
    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求更好的查询