2016-07-27 18 views
0

下面的代碼段可以工作,但是我覺得可以通過縮短和提高效率來進一步改進,但我正在努力思考可以修改的內容。爲了提高可讀性,可以使用CodeIgniter改進/縮短以下SQL或HTML代碼?

以下是代碼。

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語句,以便它更易於閱讀?

回答

1

對我來說好像你不需要第二條SQL語句,因爲你可以在第一條語句中獲取連接中的整行。只需更換這一點:

c.id   AS stakeholder_id, 

有了這個:

c.* 
+0

是否有可能保持名稱以您的解決方案 'stakeholder_id'?它在我的代碼中破壞了一些東西, – TheAuzzieJesus

+0

不,如果您選擇整行,則不能爲該列提供別名。如果你真的不想改變它,可以考慮直接改變結果列。就像,說:$ rslt-> stakeholder_id = $ rslt-> id; – which1ispink

+0

謝謝!精美的作品。 – TheAuzzieJesus