比方一个主表,一个子表,子表中的"上级ID"字段和主表的ID是关联的。
比方主表是产品表,子表是销售表,一个销售表有相同产品的多次记录。同时还有客户名称。
现在的问题是想把主表全查出来,按某个客户名称查其相关的购买日期,数量。主要问题在于:如查有100个产品,那这100个产品名称和型号都要显示出来,然后后面加上2个字段,购买日期,数量,
加上的这2个字段显示最后一条交易,如果这个客户没买过某个产品,那购买日期和数量就显示为空。

解决方案 »

  1.   

    select * from 产品表 a,销售表 b
     where a.id=b.上级ID 
      and not exists(select 1 from 销售表 where 产品id=b.产品id and 购买日期>a.购买日期)
      

  2.   


    select * from 
    产品表 a left join 销售表 b on a.id=b.上级ID 
      and not exists(select 1 from 销售表 where 产品id=b.产品id and 购买日期>a.购买日期)
      

  3.   

    select
     * 
    from 
      产品表 a 
    left join 销售表 b on 
      a.id=b.上级ID 
    and
      购买日期=(selectmax(购买日期) from 销售表 where 产品id=b.产品id )
      

  4.   

    SQL codeselect
     * 
    from 
      产品表 a 
    left join 销售表 b on 
      a.id=b.上级ID 
    and
      购买日期=(select max(购买日期) from 销售表 where 产品id=b.产品id )