Php MySQL使用数组中的多行值连接关联列
表ORDEMPhp 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'
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,那么每次都必须分解字符串。