有三个表A, B, C,它们的关系是这样的
A表里有一字段为定单号Billid   例如数据库中存的数据如下:
ID  Billid
1   123
2   456B表里也有一 字段也为定单号 Orderid  和 定单对应的商品PID号,例如数据库中存的数据如下:
定单号 Orderid    商品PID号
  123       25
  123       26
  123       27C表里是字段为商品PID及商品名称Name,例如数据库中存的数据如下:
PID  Name
25   手机
25   电脑
27   汽车我想要实现的功能是:通过A表中的定单号(SQL 条件就是`A`.Billd=`B`.Orderid),查找到B表中的商品PID,再通过B表的商品PID,到C表中去查找商品的名称。
但是这一个定单号可能会对应很多条商品ID(见上面,B表的数据),但是我只想通过SQL语句,让它返回一条数据,就像这样的形式:
定单号    商品ID        商品名称
123     25,26,27     手机,电脑,汽车
而不是有重复的数据,这样的形式:
定单号    商品ID        商品名称
123      25          手机
123      26          电脑
123      27          汽车

解决方案 »

  1.   

    搞定了。。SELECT 
      a.Billid,
      GROUP_CONCAT( b.PID SEPARATOR ',' ) AS PIDLIST,
      GROUP_CONCAT( c.NAME SEPARATOR ',' ) AS PNAMELIST
    FROM 
      a,b,c
    WHERE 
      ( a.Billid=b.Orderid AND b.PID=c.PID ) 
    GROUP BY 
      a.Billid
      

  2.   

    select b.orderid,GROUP_CONCAT(c.pid),GROUP_CONCAT(c.name) from a,b,c where a.billid=b.orderid and b.pid=c.pid group by id
    这样就行了。GROUP_CONCAT是mysql的函数。直接调用就可以了。