首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

问一个数据库查询的有关问题

2013-12-11 
问一个数据库查询的问题我现在有两张表,他们靠pid进行连接,比如:A表pidx1x2x31a1b1c12a2b2c23a3b3c34……B表

问一个数据库查询的问题
我现在有两张表,他们靠pid进行连接,比如:
A表                         
pid    x1    x2   x3
1      a1    b1   c1
2      a2    b2   c2
3      a3    b3   c3
4      ……

B表
pid    x4
1      d1
1      d2
1      d3
2      e1
2      e2
2      e3
2      e4
2      e5
3      f1
……

我现在想快速取出这样的形式:
1    a1    b1    c1    d1    d2    d3
2    a2    b2    c2    e1    e2    e3    e4    e5
3    a3    b3    c3    f1    ……

我原本是想直接进行连接,但是他对于同一个pid生成的不是一条而是多条数据,其中每条数据A表的部分都是重复的,和我的想法不一样。比如:
1    a1    b1    c1    d1
1    a1    b1    c1    d2
1    a1    b1    c1    d3
2    a2    b2    c2    e1
……

后来我改成了另一种形式,先分别取出两个列表listA和listB,然后用两个嵌套循环,每输出一条listA,就查一遍listB,如果A.pid和B.pid相等时,再进行输出。这种虽然实现了我的想法,但太低效了,实在无法忍受。不知道有没有什么更好的办法?
[解决办法]
select pid,x1,x2,x3,
(select GROUP_CONCAT(x4 SEPARATOR ' ') from B表 where pid=A表.pid)
from A表

热点排行