用PHP与MYSQL按要求显示一个页面

chang1jiang 2013-01-30 05:58:51
我在MYSQL数据库中有两个表,A和B
A表有字段:a_id, a_name, a_description(a_id是唯一值,自动递增的)
B表有字段:b_id, a_id, b_name, b_description(b_id是唯一值,自动递增的,a_id是有重复的)

我在PHP文件中调用A表数据,并用while (!$a->EOF)...$a->MoveNext();将A表的所有行的记录都显示在我做的一个页面

现在,我需要在每行记录的旁边显示相对应的b_name字段值,
于是我用LEFT JOIN " . B . " b ON (b.a_id = a.a_id)

这样,b_name字段值是显示在旁边了,可是页面总行数一下子增多了,
因为原本总行数就是a_id的行数,现在有了重复的a_id行,这是由于a_id在B表中不是唯一值。

我只想按a_id的行数显示,就是一个a_id一行,在那行旁边显示对应的b_name,该如何做到呢?
...全文
479 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
chang1jiang 2013-01-30
  • 打赏
  • 举报
回复
太谢谢了 原来关键就是那个group by b.a_id 之前没加这个,就产生a_id重复行,一加这句就没有重复了 我原本还以为group by只是排序的,没什么重要的。 能不能问一下,这是什么原因?
一起混吧 2013-01-30
  • 打赏
  • 举报
回复
select a.* , b.b_name from A left join B on A.a_id=b.a_id group by b.a_id
chang1jiang 2013-01-30
  • 打赏
  • 举报
回复
这点忘说了,虽然a_id在B表中记录是可以重复的,但只要相同的a_id对应的b_name是相同的,所以不存在多个b_name问题 以下是两表详细举例: A表 a_id | a_name | a_description 1 | name | description 2 | name | description 3 | name | description B表 b_id | a_id | b_name | b_description 1 | 2 | name a2 | description 2 | 2 | name a2 | description 3 | 1 | name a1 | description 4 | 3 | name a3 | description 我要显示的页面表格效果 a_id | a_name | a_description | b_name 1 | name | description | name a1 2 | name | description | name a2 3 | name | description | name a3 这个是不是不能用DISTINCT?如果用GROUP_CONCAT()能不能具体写一下代码呢?
xuzuning 2013-01-30
  • 打赏
  • 举报
回复
GROUP_CONCAT()
一起混吧 2013-01-30
  • 打赏
  • 举报
回复
贴出建表及插入语句,说明想要结果。
zhaoyunpengo 2013-01-30
  • 打赏
  • 举报
回复
我觉得LZ这个问题本身就有问题。 LZ也说了在B表中的a_id是重复的。 那就表明对于唯一的a_id,有多个对应a_id的b_name。请问要怎么显示?是只显示第一个对应的b_name还是全部都显示?是连起来显示还是用<br>格式起来?这都是问题。 只要选择b_name的SQL命令与之前选取A表的a_id的SQL命令在同一个while循环下,应该就不会重复了。

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧