2016-04-26 22 views
0

これは4つのクエリを1つにまとめたものです。これは本当に古いコードです。私がこの作業を行うことができれば、あとでセキュリティのためにPDOに更新することができます。私は何をしようとしていることSQLクエリから行数を取り出し、変数としてPHPに格納しますか?

select count(*) from dialogue_employees d_e, 
    dialogue_leaders d_l where 
    d_l.leader_group_id = d_e.leader_group_id 

と私はまた、式を作成するために下にある行数= 1

dialogue.statusから数える式でそれを使うからcount行であります結果から合計パーセント。これはPHPとMySQLであり、私は行を数え、それらを下の数式に使用されるPHPの変数として入れておくのに最適な方法ではないのですか?

function calculate_site_score($start_date, $end_date, $status){ 
    while($rows=mysql_fetch_array($sqls)){ 
     $query = " 
     SELECT 
      dialogue.cycle_id, 
      $completecount = sum(dialogue.status) AS calculation, 
      $total_employees = count(dialogue_employees AND dialogue_leaders), dialogue_list.*, 
     FROM dialogue, 
      (SELECT * FROM dialogue_list WHERE status =1) AS status, 
      dialogue_employees d_e, 
      u.fname, u.lname, d_e.* 
      user u, 
      dialogue_list, 
      dialogue_leaders d_l 
       LEFT JOIN dialogue_list d_list 
       ON d_e.employee_id = d_list.employee_id, 
     WHERE 
      d_l.leader_group_id = d_e.leader_group_id 
      AND d_l.cycle_id = dialogue.cycle_id 
      AND u.userID = d_e.employee_id 
      AND dialogue_list.employee_id 
      AND site_id='$_SESSION[siteID]' 
      AND start_date >= '$start_date' 
      AND start_date <= '$end_date'"; 
     $sqls=mysql_query($query) or die(mysql_error()); 
    } 
    $sitescore=($completecount/$total_employees)*100; 
    return round($sitescore,2); 
} 
+0

はあなたがやろうとしているものの例がありますか?それともあなたの例ですか?このコードに別の列 'status'を追加したい場合や、行数を組み込むように数式を変更するかどうかはわかりません。あなたの '$ sitescore'行が例であるかどうか、あるいはあなたが保持している部分を指摘できますか? – blamb

+0

4つのテーブルをまとめて2つの結果の行を数えるだけです。 $ completecountと$ total_employeesは私が結果を得ようとしている2つのものです。クエリは機能しますが、私はそれを数えて2つの変数にするための構文を持っていません。 –

+0

だから私はちょうど$ sitescore式を動作させようとしています。 –

答えて

0

クエリを分離すると、データをより詳細に管理できます。あなたはあなたの数え方を慎重にしなければなりません。それはかなり混雑している。

あなたの関数をクリーンアップしたければ、このようにクエリを積み重ねることができます。したがって、関数は非常に混雑しています。

function calculate_site_score($start_date, $end_date, $status){ 

    $query="select * from dialogue;"; 

    if ($result = $mysqli->query($query))) { 

     //iterate your result 
     $neededElem = $result['elem']; 
     $query="select * from dialogue_list where status =1 and otherElem = " . $neededElem . ";"; 

     //give it a name other than $sqls, something that makes sense. 
     $list = $mysqli->query($query); 

     //iterate list, and parse results for what you need 
     foreach($list as $k => $v){ 
      //go a level deeper, or calculate, rinse and repeat 
     } 
    } 

次に、カウントを個別に行います。

クエリをそれぞれ別々に分けておくと便利です。ここで

は数例あるHow do I count columns of a table

関連する問題