2016-07-27 11 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

最初のステートメントで結合の行全体をフェッチするだけで済むので、2番目のSQL文は不要です。これにより

c.id   AS stakeholder_id, 

::ちょうどこれを置き換える

c.* 
+0

それはあなたのソリューションで名 'stakeholder_id' を維持することは可能ですか?私のコードでいくつかのことが起こります。 – TheAuzzieJesus

+0

いいえ、行全体を選択している場合は、列に別名を付けることはできません。実際に変更したくない場合は、結果行を直接変更することを検討してください。同様に、$ rslt-> stakeholder_id = $ rslt-> id; – which1ispink

+0

ありがとう!美しく動作します。 – TheAuzzieJesus

関連する問題