我将多条记录添加到一条记录中的MySQL Query

问题描述

|| 所以我的措词真的很不好,所以请多多包涵。 我正在建立一个网站,人们可以在这里购买给孩子的礼物,每个孩子可以在清单中包含多个礼物。 我有两个表
children
gift_list
。这些表非常基本,具有以下行:
children
  - id
  - name
  - age
  - status

gift_list
  - id
  - child_id
  - description
  - status
我试图获取属于一个孩子的所有礼物并将它们作为孩子对象的数组返回,但结果却很奇怪。 这是我当前的SQL语句:
SELECT * FROM children JOIN gift_list WHERE gift_list.child_id = children.id
结果是:
Child A:
  - id
  - name
  - age
  - status
  - gift A

Child A:
  - id
  - name
  - age
  - status
  - gift B
我知道我需要遍历
gift_list
表,然后将它们添加到数组中,但是我是MySQL的新手,我迷失了这个概念,无法考虑如何正确搜索我的\正在努力实现。想法的最终结果将是:
Child A:
  - id
  - name
  - age
  - status
  - gifts
     - gift A
        - description
        - status
     - gift B
        - description
        - status
任何帮助将非常感激!附带说明,也许很重要,我正在使用PHP框架CodeIgniter。 编辑: 经过几次使用下面建议的尝试失败后,我终于得到了下面的代码来工作...可能有更好/更清洁的方法...如果是的话,请提示我:)
$children = $this->db->get(\'children\');
$gift_list = $this->db->get(\'gift_list\');

foreach ( $children->result() as $child )
{
    $gifts = array();
    foreach ( $gift_list->result() as $gift )
    {
        if ( $child->id == $gift->children_id )
        {
            array_push($gifts,$gift);
            $child->gifts = $gifts;
        }
    } 
}

echo \"<pre>\";
print_r($children->result());
echo \"</pre>\";
感谢所有的建议!     

解决方法

        您需要执行2个不同的查询。第一个得到孩子,另一个得到他们的礼物。 第一个查询的示例:
SELECT * FROM children WHERE ... any children-related criteria here ...
您现在应该拥有数组(尚无礼物):
Child A:
  - id (let\'s say this equals 1)
  - name
  - age
  - status

Child A:
  - id (let\'s say this equals 2)
  - name
  - age
  - status
重要的是,该数组的键是子ID(嗯,至少这会使事情变得容易)。 使用该数组,构建以下查询:
SELECT * FROM gift_list WHERE child_id IN (1,2);
您可以使用类似的方法进行操作:
$gifts_sql = \'SELECT * FROM gift_list WHERE child_id IN (\' . implode(\',\',array_keys($children)) . \')\';
现在,您应该遍历该查询的结果,并将其附加为:
while ($row = mysql_fetch_assoc($result)) {
    $children[$row[\'child_id\']][\'gifts][$row[\'gift_id\']] = $row;
}
您的
$children
数组现在应该看起来像您想要的样子。     ,        您说您正在得到奇怪的结果,但不是那些结果。如果要以某种方式遍历查询结果,也许您需要对结果进行排序?添加类似
ORDER BY children.id,gift.id
到最后。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...