商品信息表(Wares_info)
名称      类型    约束条件                       说明
wares_id       int       无重复                       商品标识,主键
wares_name     char(100)  不允许为空                     商品名称商品额外属性表(Wares_ex_property)
名称      类型    约束条件                       说明
ex_pid        int        无重复                       商品额外属性标识,主键
p_name        char(20)    不允许为空                     额外属性名称商品额外信息表(Wares_ex_info)
名称          类型       约束条件                   说明
ex_iid          int         无重复                       商品额外信息标识,主键
wares_id        int         不允许为空                     所属商品标识,和Wares_info.wares_id关联
property_id     int         不允许为空           商品额外属性标识,和Wares_ex_property.ex_pid关联
property_value  char(200)   不允许为空                     商品额外属性值在商品额外属性表(Wares_ex_property)中添加2条记录:
ex_pid            p_name
1                商品图片
2                商品长度如何一次查询出 商品ID 商品名称  商品图片 商品长度的 数据?

解决方案 »

  1.   

    select a.wares_id 商品ID, a.wares_name 商品名称, c.p_name 额外属性名称
    from Wares_info a , Wares_ex_property b , Wares_ex_info c
    where a.wares_id = c.wares_id and c.property_id = b.ex_iid
      

  2.   

    我写了一个:
    SELECT a.Wares_id,a.Wares_name,tmp.property_value FROM Wares_info a 
    INNER JOIN 
    (SELECT * FROM Wares_ex_property b INNER JOIN Wares_ex_property c ON b.ex_pid=c.property_id) AS tmp 
    ON a.Wares_id=tmp.Wares_id;这一个查询只能把你的“商品ID,商品名称,商品图片”当做一条记录查出来,然后再把“商品ID,商品名称,商品长度”当做一条记录查出来,也就是一下子查出两条记录。
    但是不能把他们合成一条记录查出来。
    因为这是把列转行的处理了。
    我不会那个处理。hehe。不好意思。
      

  3.   

    select 商品id=ex_iid,商品名称 =Wares_info.wares_name,
           商品图片=case when property_id=1 then property_value  end,
           商品长度=case when property_id=2 then property_value  end
     from Wares_info  , Wares_ex_info
    where Wares_info  .wares_id = Wares_ex_info.wares_id 
      

  4.   

    select a.wares_id 商品ID, a.wares_name 商品名称, c.p_name 额外属性名称
    from Wares_info a , Wares_ex_property b , Wares_ex_info c
    where a.wares_id = c.wares_id and c.property_id = b.ex_iid