Php MySQL使用数组中的多行值连接关联列

Php MySQL使用数组中的多行值连接关联列,php,mysql,arrays,inner-join,associative,Php,Mysql,Arrays,Inner Join,Associative,表ORDEM ord_id | name 1 - 'A' 2 - 'B' 3 - 'C' 4 - 'D' 奥卡门托表 orc_id | type 10 - 'AA' 20 - 'BB' 30 - 'CC' 40 - 'DD' 表ORDEM_ORCAMENTO orc_id | type 10 - 'AA' 20 - 'BB' 30 - 'CC' 40 - 'DD'

表ORDEM

ord_id | name
1      -  'A'
2      -  'B'
3      -  'C'
4      -  'D'
奥卡门托表

orc_id | type
  10   -  'AA'
  20   -  'BB'
  30   -  'CC'
  40   -  'DD'
表ORDEM_ORCAMENTO

orc_id | type
  10   -  'AA'
  20   -  'BB'
  30   -  'CC'
  40   -  'DD'
id | ord_id | orc_id  
1  -   1    -   10
2  -   1    -   20
3  -   2    -   30
4  -   2    -   40
MySQL查询:

SELECT o.*, oo.orc_id 
FROM ordem AS o
        INNER JOIN ordem_orcamento AS oo ON oo.ord_id = o.ord_id
ORDER BY o.ord_id ASC
获得的结果:

1 - 'A' - 10
1 - 'A' - 20
2 - 'B' - 30
2 - 'B' - 40 
所需成果:

1 - 'A' - 10,20
2 - 'B' - 20,30
我想把ORCAMENTO表中属于ORDEM表的所有id放入一个数组中


我尝试了很多方法来解决这个问题,但都没有成功…

GROUP\u CONCAT
允许您将一个组选择为逗号分隔的字符串

select o.ord_id, o.name, group_concat(oo.orc_id)
from ordem o
join ordem_orcamento oo on o.ord_id = oo.ord_id
group by o.ord_id, o.name
order by o.ord_id asc

通过循环结果,也可以使用php构建数组

$data = array();
foreach ($result as $res) {
    $data[$res->ord_id][] = $res->orc_id
}

//output: foreach ($data as $orderitem) echo implode(",",$orderitem);

只需返回一个结果并在PHPIt的Perfect中处理数组,我使用的是没有“GROUP by”的GROUP_CONCAT,效果不好,但现在一切都很好。。。TKS可能是,但我认为它的性能不会很好。。。从数据库中获得清晰的结果仍然是我的最佳性能选择…当然可以。但是,如果您需要一些操作(计数等)的单独ID,那么每次都必须分解字符串。