weixin_58648225 2022-02-04 14:01 采纳率: 89.2%
浏览 58
已结题

在数据库的select里面遇到了一个常见的问题

img

就是这样一个貌似是column不存在的错误,经过反复检查好像并没有字段缺失一系列的问题,想请教一下问题的出处,感谢

省略部分代码,关联部分如下


        if (isset($search_condition->done_status) && $search_condition->done_status >= 0) {
            if (empty($s_where)) {
                $s_where = ' where';
            } else {
                $s_where .= ' AND';
            }
            $s_where .= ' APP.done_status_c = ' . $search_condition->done_status;
        }
static function get_list($search_condition)
    {
        if (!empty($search_condition->more_than_80_percent_digestion)) {
            $sql_additional_cond = '';
            $sql_cond = self::get_condition_sql($search_condition);
            $sql = "SELECT APP.id_c as id, APP.name_c as name, APP.name_romaji_c as name_romaji, APP.app_date as date,
                APP.start_date_c as start_date, APP.end_date_c as end_date,
                APP.app_client_id as client_id, APP.app_schedule_ready as schedule_ready,
                APP.app_approval_data as approval_data, APP.app_approved as approved,
                APP.app_material_ready as material_ready, APP.app_tutor_ready as tutor_ready,
                APP.form_c as form, APP.app_type as type, APP.lesson_language_c as lesson_language,
                APP.app_lesson_category as lesson_category, APP.app_number_of_people as number_of_people,
                APP.app_lesson_unit_price as lesson_unit_price, APP.app_bill_type as bill_type,
                APP.approved_c, APP.creator_id_c, APP.draft_c, APP.parent_id_c, APP.app_cat_id_c as app_cat_id, APP.estimated_time_c as estimated_time,
                C.name_c as client_name, U.name_c as staff_name
                FROM (SELECT APP_sub.id_c, APP_sub.name_c, APP_sub.name_romaji_c,
                APP_sub.date_c app_date, APP_sub.start_date_c, APP_sub.end_date_c,
                APP_sub.client_id_c app_client_id, APP_sub.schedule_ready_c app_schedule_ready,
                APP_sub.approval_data_c as app_approval_data, APP_sub.approved_c as app_approved,
                APP_sub.material_ready_c as app_material_ready, APP_sub.tutor_ready_c as app_tutor_ready,
                APP_sub.form_c, APP_sub.type_c as app_type, APP_sub.lesson_language_c,
                APP_sub.lesson_category_c as app_lesson_category, APP_sub.number_of_people_c as app_number_of_people,
                APP_sub.lesson_unit_price_c as app_lesson_unit_price, APP_sub.bill_type_c as app_bill_type,
                APP_sub.approved_c, APP_sub.creator_id_c, APP_sub.draft_c, APP_sub.parent_id_c, APP_sub.client_id_c, APP_sub.staff_id_c,
                APP_sub.estimated_time_c, APP_sub.app_cat_id_c, SUM(actual_minutes_c)/60 as minutes, SUM(actual_minutes_c)/60/APP_sub.estimated_time_c*100 as digest_rate,
                APP_sub.lastupdate_datetime_c, APP_sub.open_status_c FROM application_t APP_sub
                LEFT JOIN lesson_t L  ON APP_sub.id_c = L.app_id_c WHERE estimated_time_c > 0 AND APP_sub.end_date_c IS NULL
                group by app_id_c) APP LEFT JOIN client_t C on C.id_c = APP.client_id_c
                LEFT JOIN user_t U on U.id_c = APP.staff_id_c
                LEFT JOIN user_group_t G on G.id_c = C.group_id_c" . $sql_cond;
        } else {
            $sql_cond = self::get_condition_sql($search_condition);
            $sql = "SELECT APP.id_c as id, APP.name_c as name, APP.name_romaji_c as name_romaji, APP.date_c as date, APP.start_date_c as start_date, APP.end_date_c as end_date,
                    APP.client_id_c as client_id, APP.schedule_ready_c as schedule_ready, APP.approval_data_c as approval_data, APP.approved_c as approved,
                    APP.material_ready_c as material_ready, APP.tutor_ready_c as tutor_ready, APP.form_c as form, APP.type_c as type, APP.lesson_language_c as lesson_language,
                    APP.lesson_category_c as lesson_category, APP.number_of_people_c as number_of_people, APP.lesson_unit_price_c as lesson_unit_price, APP.bill_type_c as bill_type,
                    APP.approved_c, APP.creator_id_c, APP.draft_c, APP.parent_id_c, APP.app_cat_id_c as app_cat_id, APP.estimated_time_c as estimated_time,
                    C.name_c as client_name, U.name_c as staff_name
                    FROM " . self::$table_name . ' APP LEFT JOIN client_t C on C.id_c = APP.client_id_c
                    LEFT JOIN user_t U on U.id_c = APP.staff_id_c
                    LEFT JOIN user_group_t G on G.id_c = C.group_id_c' . $sql_cond;
        }
        $list = array();
        database::Connect($pdo);
        $del = $pdo->prepare($sql);
        $del->execute();

从html呼出app::get_list()时出现此错误,目的时取出APP表内的done_status_c=0(或是1)时的数据,
问题大概率出现在if文的(!empty($search_condition->more_than_80_percent_digestion))下面并没有进入到else
请教一下需要改正的地方或可能出现错误的位置。
感谢 !

  • 写回答

3条回答 默认 最新

  • DarkAthena ORACLE应用及数据库设计方案咨询师 2022-02-04 14:34
    关注

    你第一个查询sql用了子查询,从这一段"group by app_id_c) APP LEFT JOIN client_t C“,可以看出,”APP“已经不是指的你数据库里的”APP“表了,而是指的你前面这个子查询,而这个子查询里,没有select ”done_status_c“这个字段,当然会报这个字段不存在了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月12日
  • 已采纳回答 2月4日
  • 修改了问题 2月4日
  • 创建了问题 2月4日

悬赏问题

  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用