![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
用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,该如何做到呢?
我是初级入门水平,还请高手能详细指教 展开
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,该如何做到呢?
我是初级入门水平,还请高手能详细指教 展开
若以下回答无法解决问题,邀请你更新回答
4个回答
展开全部
你要这样想,对于一个a_id来说,它对应的b_name会有好几个,你想展示哪一个呢??还是随便
如果没有要求的话,你在sql后面加上一个 group by a.a_id
如果没有要求的话,你在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 函数,这个函数适用于分组之后的字段相连
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用RIGHT JOIN呗~
追问
这个试了,也不行,还是显示了a_id的重复的行
追答
用b连接a····不要用a连接b
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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的重复的行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询