繁体   English   中英

如何使用mysql和php将一对多关系转换为平面数组

[英]How do I convert a one to many relationship to a flat array using mysql and php

如何使用mysql或php格式化与一个“行”的一对多关系?

主表

movie_id name
1        Portland
2        Blazers

多表

movie_id actor
1        Brandon
2        Greg

下面是我映射出的伪代码。 在继续之前,不确定在PHP或MYSQl中是否有任何本机可以提高效率。 我想我有两个查询。 一部带有电影信息。 一本带演员信息。 一旦它们成为数组,我将循环遍历以获取与演员的每部电影的单个记录。

movieInfo = = []
actorInfo = = []

Foreach(movieActorId)
    If(actorId = movieActorId)
         arrayPush(movieInfo[actorArray],actorInfo[name]);

最终的数组看起来像这样

movieInfo = array('movie_id' => '1', 
                    'movie_name' => 'porland', 
                    'actor' => array(Brandon,Greg)
                    );

也许这是您需要的:

SELECT m.movie_id, m.name AS movie_name, GROUP_CONCAT(a.actor SEPARATOR ',') AS actor
FROM movies m
JOIN actors a ON m.movie_id = a.movie_id
GROUP BY m.movie_id;

// Run query

$movieInfo = array();
while ($array = mysqli_fetch_assoc($result)) {
    $array['actor'] = explode(',', $array['actor']);
    $movieInfo[] = $array;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM