私は値オブジェクトを設定するためにあるテーブルからいくつかの "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
を持っていないので、それを持ってする理由はありませんが、彼らは自分たち集計結果をされない -
コードレビューは、作業コードを改善するためのものです。私はあなたの質問に役立つ可能性が高いstackoverflowにあなたの質問を移行しました。いったん動作したら、追加の入力については、Code Reviewに質問を戻してください。 –