2011-12-14 14 views
1

私は値オブジェクトを設定するためにあるテーブルからいくつかの "COUNTS"を収集しようとしています。私は自分のローカルサーバー上でそれを実行していて、ややうまく動作しますが、実際にはそうではないと思います。システムが検査および検査データを追跡するためのもので、この機能は過去の検査の履歴を呼び出します。最初の部分は "検査"テーブルを呼び出してそのプログラムの検査IDを取得し、サブ選択は検査されたアイテムの数、コンプライアンスのある場所の数などを取得します。このmysqli php呼び出しが失敗するのはなぜですか?

ここにその肉があります。オブジェクトの正しい量を返し、いくつかのIDのみが返されず、その代わりに他のIDの重複が返されます。私はLEFT JOINSとしてやってみましたが、ORDER BYを試しました。私はそれを多少試してみましたが、なぜ検査IDを複製して他のものを落とすのか分かりません。コードの関連部分は次のとおりです。

$stmt = mysqli_prepare($this->connection, 
     "SELECT 
      i.id, 
      i.assign_date, 
      i.start_date, 
      i.complete_date, 
      i.complete, 
      i.inspection_type, 
      i.program_id, 
      (SELECT COUNT(t.inspected) FROM insp_items t WHERE t.inspection_id = i.id && t.inspected = 1) AS inspected, 
      (SELECT COUNT(t.status) FROM insp_items t WHERE t.inspection_id = i.id && t.status = 0) AS ic, 
      (SELECT COUNT(t.status) FROM insp_items t WHERE t.inspection_id = i.id && t.status = 1) AS icw, 
      (SELECT COUNT(t.status) FROM insp_items t WHERE t.inspection_id = i.id && t.status = 2) AS nic, 
      (SELECT COUNT(t.status) FROM insp_items t WHERE t.inspection_id = i.id && t.status = 3) AS na 
     FROM inspections i 
     WHERE i.program_id = ? GROUP BY i.id"); 
    $this->throwExceptionOnError(); 

ご協力いただきありがとうございます。ありがとうございました。あなたは何の集約機能

サブ選択使用集約機能COUNTを持っていないので、それを持ってする理由はありませんが、彼らは自分たち集計結果をされない -

+0

コードレビューは、作業コードを改善するためのものです。私はあなたの質問に役立つ可能性が高いstackoverflowにあなたの質問を移行しました。いったん動作したら、追加の入力については、Code Reviewに質問を戻してください。 –

答えて

1

GROUP BY i.id削除します。

関連する問題