有一个企业表和一个样品
根据企业的ID可以发布多个样品,这些样品有可能是连续发的
在列表上显示出来的话,很有可能都是显示一个企业发布的样品,这样不行,你看可不可以,每个企业只显示一个样品
比如说一页显示33个样品,也是就是33个企业的样品(都显示一个),如果还有余下的企业以此例推,到下一页,如果根据企业ID发布的样品都显示一个完之后,接着显示样品的第二个,按照上面的显示方法以此例推
企业表Corpoation_cn 字段 cid
样品表Product_cn 字段 id,cid,pname,pic  比如企业A B各发布5个产品
先取出
A 1 B 1 然后
A 2 B 2
A 3 B 3
一直到最后同理也就是先显示每个企业发布的最新的一个产品,直到显示完所有企业之后再显示每个企业的第二个产品

解决方案 »

  1.   

    --sql 2000
    select m.cid,n.id,n.pname,n.pic,
    px=(select count(1) from Product_cn where cid = n.cid and id < n.id) + 1 
    from Corpoation_cn m , Product_cn n 
    where m.cid = n.cid
    order by px , m.cid
      

  2.   

    --sql 2005
    select m.cid,n.id,n.pname,n.pic,
    px= row_number() over(partition by n.cid order by n.id)
    from Corpoation_cn m , Product_cn n 
    where m.cid = n.cid
    order by px , m.cid
      

  3.   

    SQL2K5/2K8:select 
    a.id, a.cid, a.pname, a.pic,
    row_number() over (partition by b.cid order by a.id)  
    from 
    product_cn a inner join corporation_cn b on 
    a.cid=b.cid
    order by
    5
      

  4.   

    dawugui
     
    (爱新觉罗.毓华) 
    可否把你加下我的QQ627605371,想请教下
      

  5.   

    dawugui
     
    (爱新觉罗.毓华) 
    px= row_number() 有错误
      

  6.   

    dawugui
     
    (爱新觉罗.毓华) 如果先根企业的等级,再根据样品发布先衙顺序的话,也就是等级高的在前面,其次是样品发早的在前面