【问题标题】:Can the following SQL or HTML code using CodeIgniter be improved / shorterned for readability?是否可以改进/缩短使用 CodeIgniter 的以下 SQL 或 HTML 代码以提高可读性?
【发布时间】:2016-07-27 11:30:43
【问题描述】:

以下代码段有效,但我觉得可以通过缩短它来进一步改进,从而提高效率,但我正在努力思考可以修改的内容。

下面是代码。

function get_student_stakeholder_refs($debate_id) {
     $sql1    = "SELECT
              b.id            AS debates_id,
              c.id            AS stakeholder_id,
              a.student_id    AS student_id
            FROM
              debate_groups a
              inner join debates b ON a.debate_id = b.id
              inner join debate_stakeholders c ON a.stakeholder_id = c.id
            WHERE
              b.starter_pack_id = c.starter_pack_id AND 
              a.debate_id = b.id AND 
              b.id = ? AND 
              a.student_id = ?";
    $rslt = $this->db->query($sql1, array($debate_id, $this->get_user_id()))->row();
    if(count($rslt)!= 0){
        $sql2  = "SELECT * FROM debate_stakeholder_profiles WHERE stakeholder_id = ?";
        return $this->db->query($sql2, array($rslt->stakeholder_id))->result_array();
    }
}

有没有办法将以下 SQL 语句组合成一个 SQL 语句,以便于阅读?

【问题讨论】:

    标签: html mysql codeigniter


    【解决方案1】:

    在我看来,您不需要第二条 SQL 语句,因为您可以在第一条语句的连接中获取整行。只需替换这个:

    c.id            AS stakeholder_id,
    

    有了这个:

    c.*
    

    【讨论】:

    • 是否可以在您的解决方案中保留名称“stakeholder_id”?它破坏了我的代码中的一些东西,
    • 不,如果您选择整行,则不能为该列指定别名。如果您真的不想更改它,请考虑直接更改结果行。比如说:$rslt->stakeholder_id = $rslt->id;
    • 谢谢!效果很好。
    猜你喜欢
    • 1970-01-01
    • 2013-11-05
    • 2022-09-26
    • 2020-07-22
    • 1970-01-01
    • 2020-04-19
    • 2019-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多