用PHP,将MYSQL某A表所有行显示在一个页面,需调用B表中一个字段

我有两个数据表,表A和表BA表有字段:a_id,a_name,a_description(a_id是唯一值,自动递增的)B表有字段:b_id,a_id,b_name(b_... 我有两个数据表,表A和表B
A表有字段:a_id, a_name, a_description(a_id是唯一值,自动递增的)
B表有字段:b_id, a_id, b_name(b_id是唯一值,自动递增的,a_id是有重复的)
我在PHP文件中调用SQL,然后用while (!$a->EOF) 和 $a->MoveNext();将A表的所有行的记录都显示在一个页面。
我还需要在每行记录的旁边显示相对应的b_name,于是我用LEFT JOIN " . B . " b ON (b.a_id = a.a_id),
可是页面显示的行数一下子增多了,原本总行数就是a_id的行数,现在有了重复的a_id行,因为a_id在B表中不是唯一值的。
我只想按a_id的行数显示,就是一个a_id一行,在那行旁边显示对应的b_name,该如何做到呢?

我是初级入门水平,还请高手能详细指教
展开
 我来答
若以下回答无法解决问题,邀请你更新回答
雨林雨林9876
2013-01-31 · TA获得超过157个赞
知道小有建树答主
回答量:148
采纳率:0%
帮助的人:163万
展开全部
你要这样想,对于一个a_id来说,它对应的b_name会有好几个,你想展示哪一个呢??还是随便
如果没有要求的话,你在sql后面加上一个 group by a.a_id
更多追问追答
追问
这个对了,如果b_name是对应或随便展示哪个的,加了group by a.a_id后,就达到效果了。

但是,如果b_name有多个,不知道如何才能用逗号从小到大显示出所有对应的b_name呢:
b name 1, b name2, b name 3
追答
SELECT a.*,GROUP_CONCAT(b.b_name SEPARATOR  ';') as name FROM `a` as a left join `b` as b on a.a_id=b.a_id group by a.a_id
可以使用 GROUP_CONCAT 函数,这个函数适用于分组之后的字段相连
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zyx10186115
2013-01-30
知道答主
回答量:19
采纳率:0%
帮助的人:7.7万
展开全部
做任务的不好意思
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
caiaolin
2013-01-30 · TA获得超过664个赞
知道小有建树答主
回答量:621
采纳率:0%
帮助的人:458万
展开全部
用RIGHT JOIN呗~
追问
这个试了,也不行,还是显示了a_id的重复的行
追答
用b连接a····不要用a连接b
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
奈蒙
2013-01-30 · TA获得超过211个赞
知道小有建树答主
回答量:491
采纳率:0%
帮助的人:212万
展开全部
select distinct a.a_id,b.b_name,a.a_name,a.a_description form A as a left join B as b on a.a_id=b.b_id
追问
distinct 试了,不行呀,还是显示了a_id的重复的行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 4条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式