複数の SQL SELECT ステートメントの結合: 実践的な例
このガイドでは、複数の SQL SELECT
ステートメントの結果を単一の包括的なテーブルに効率的に結合する方法を説明します。 例としてタスク管理データベースを使用します。 各タスク レコードには、期限、期限までの日数 (PALT)、経過時間 (作成からの日数) などの詳細が含まれます。 目標は、各個人のタスクの合計数と期限を過ぎたタスクの数を示すレポートを生成することです。
合計タスクと遅延タスクをカウントするための個々のクエリは次のようになります:
<code class="language-sql">SELECT ks, COUNT(*) AS "Total Tasks" FROM Table GROUP BY ks;</code>
<code class="language-sql">SELECT ks, COUNT(*) AS "Overdue Tasks" FROM Table WHERE Age > Palt GROUP BY ks;</code>
これらの結果をマージするには、LEFT JOIN
を使用します。 これにより、期限を過ぎたタスクがない場合でも、合計タスク数に含まれるすべての人が確実に含まれるようになります。
<code class="language-sql">SELECT t1.ks, t1."Total Tasks", COALESCE(t2."Overdue Tasks", 0) AS "Overdue Tasks" FROM (SELECT ks, COUNT(*) AS "Total Tasks" FROM Table GROUP BY ks) t1 LEFT JOIN (SELECT ks, COUNT(*) AS "Overdue Tasks" FROM Table WHERE Age > Palt GROUP BY ks) t2 ON t1.ks = t2.ks;</code>
COALESCE
関数は、期限を過ぎたタスクがない場合 (NULL
から LEFT JOIN
が生成される) を処理します。わかりやすくするために NULL
を 0 に置き換えます。 最後のテーブルには、ks
(個人 ID)、「合計タスク数」、および「期限を過ぎたタスク」が表示されます。 LEFT JOIN
により、期限を過ぎたタスクがあるかどうかに関係なく、すべての個人がリストされるようになります。
以上が複数の SQL SELECT ステートメントを組み合わせてタスクと遅延タスクをカウントする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。