我在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,该如何做到呢?
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,该如何做到呢?
LZ也说了在B表中的a_id是重复的。
那就表明对于唯一的a_id,有多个对应a_id的b_name。请问要怎么显示?是只显示第一个对应的b_name还是全部都显示?是连起来显示还是用<br>格式起来?这都是问题。
只要选择b_name的SQL命令与之前选取A表的a_id的SQL命令在同一个while循环下,应该就不会重复了。
a_id | a_name | a_description
1 | name | description
2 | name | description
3 | name | descriptionB表
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()能不能具体写一下代码呢?
原来关键就是那个group by b.a_id
之前没加这个,就产生a_id重复行,一加这句就没有重复了我原本还以为group by只是排序的,没什么重要的。
能不能问一下,这是什么原因?