表TA 和表TB 
   TA的字段:ID,物资名称 
   TB 的字段:TAID,购买单 ……
  也就是TA与TB是一对多的关系,现在想从TA关联到TB中,只需要取TB中的一条就够了。如:
     TA:  id   物资名称      TB:   TAID   购买单   
          1     a                   2     0306
          2     b                   2     0305
          3     c                   2     0307
         ……                 ……现在我想得到这样的结果:
          id   物资名称      购买单
          2      b           0306,0305,0307
         ……这样的结果,SQL语句怎么写写?请大家帮帮忙。

解决方案 »

  1.   

    一种较为苯的方法是:
    顺序(1):先利用游标把TB表中相同TAID的购买单连接成一条记录并放入一临时表#TMP
    顺序(2):利用TA INNER JOIN #TMP
      

  2.   

    用一个sql语句恐怕比较困难。
    我觉得还是写一个存储过程吧,要么就用程序实现。
      

  3.   

    select id,物资名称,购买单 from tb join ta where tb.id=ta.id
      

  4.   

    select id,物资名称,购买单 from tb,ta where tb.id=ta.id
      

  5.   

    第一次回答有误不好意思!
    select id,物资名称,购买单 from tb join ta on tb.id=ta.id
      

  6.   

    用 JOIN 出来还是有三条,我要得只要一条数据。
       2      b           0306,0305,0307
      

  7.   

    我用了一个方法,就是:
       select   TB.TAID ,  购买单=TB.购买单+','+TB.购买单  from TB  left join TB as TC  where TB.TAID<>TC.TAID  
        
       用这样的方法的得到结果放到视图VTA是:
                TAID   购买单
                2      0306,0305,0307
                2      0305,0306,0307
                2      0307,0305,0306
               ……
    现在再用TA与临时表关联;
              SELECT TA.ID,TA.物资名称 ,VTA.购买单 from TA INNER JOIN VTA
           WHERE VTA.TAID=TA.ID
    得到的结果是:
            
               id     物资名称    购买单
                2     b          0306,0305,0307
                2     b          0305,0306,0307
                2     b          0307,0305,0306现在只需要其中一条就够了,这下有什么好的处理方法呢?该怎么处理?