为了账号安全,请及时绑定邮箱和手机立即绑定

尝试合并 SQL 查询的两个结果

尝试合并 SQL 查询的两个结果

PHP
慕丝7291255 2022-10-09 16:20:39
我正在尝试使用 PHP 在 MYSQL 中合并两个查询的两个结果,但我很困惑如何去做!我正在使用 PDO。我正在为一种爱好编程,并正在尝试制作一个待办事项列表应用程序,就像 Trello 板一样。但是,我只是不知道如何合并来自数据库中不同表的两个结果。思路如下:我有一个名为“task_lists”的表格,内容如下:'list_id => 1, list_name = 'listOne''list_id => 2, list_name = 'listTwo'还有一个名为“任务”的表:task_id => 1, list_id => 1, task_name => 'taskOfListOne', duration => 5, is_done => 1task_id => 2, list_id => 1, task_name => 'anotherTaskOfListOne', duration => 5, is_done => 1task_id => 3, list_id => 2, task_name => 'taskOfListTwo', duration => 10, is_done => 0我正在尝试创建一个在两个结果之间合并的数组,如下所示:(我知道这是数组应该是什么样子的粗略图片)$result = [array][list_id] = 1, [list_name] = 'listOne' =>                      [array][list_id] = 1, ['task_name] = taskOfListOne,[duration] = 5, ['is_done'] => 1                     [array][list_id] = 1, ['task_name] = anotherTaskOfListOne,[duration] = 5, ['is_done'] => 1[list_id] = 2, [list_name] = 'listTwo' =>                     [array][list_id] = 2, ['task_name] = taskOfListTwo,[duration] = 5, ['is_done'] => 1这甚至可能吗?我已经尝试过 Union sql 查询和嵌套 foreach 语句之类的方法,但它们都不适合我。我在这里错过了什么吗?PS:对不起我的英语不好。
查看完整描述

1 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

你试过左连接吗?


SELECT TL.`list_id`, TL.`list_name`, T.`task_name`, T.`duration`  

FROM task_lists AS TL

LEFT JOIN tasks as T ON TL.`list_id` = T.`list_id`

然后在 PHP 中,您以所需的格式构建数组。


稍后编辑: 根据您的要求解析 SQL 数据的简单 PHP 示例(删除重复信息):


<?php

// $mysql_rows -> here is your query result, fetched as associative array

$filtered_array = array();

foreach ($mysql_rows as $row){


    // Initiate record if is not already initiated

    if (!isset($filtered_array[ $row['list_id'] ])){

        $filtered_array[ $row['list_id'] ] = array(

            'list_id'   => $row['list_id'],

            'list_name' => $row['list_name'],

            'tasks'     => array()

        );

    }


    // Add tasks

    $filtered_array[ $row['list_id'] ]['tasks'][] = array(

        'task_name'  => $row['task_name'],

        'duration'   => $row['duration'],

        'is_done '   => $row['is_done ']

    );

}


// Optional: if you want to remove list_id from $filtered_array key names, uncomment the next line

// $filtered_array = array_values($filtered_array);

?>


查看完整回答
反对 回复 2022-10-09
  • 1 回答
  • 0 关注
  • 118 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信