単一出力のための 2 つのテーブルの結合
データベース操作では、多くの場合、複数のソースからのデータを結合した出力に結合する必要があります。共通の課題は、構造は似ているがカテゴリが異なるテーブルを結合することです。次の問題を考えてみましょう。
「KnownHours」と「UnknownHours」という 2 つのテーブルがあり、その列には ChargeNum (一意の識別子)、CategoryID (カテゴリの割り当て)、Month (日付)、Hours (実際の値)。タスクは、Month 列を無視してこれらのテーブルを 1 つのデータ テーブルに結合し、ChargeNum と CategoryID で時間をグループ化することです。
期待される出力は次のとおりです。
ChargeNum CategoryID Hours 111111 1 90 111111 2 50 111111 Unknown 110.5 222222 1 40 222222 Unknown 25.5
これを達成するにはでは、2 つのクエリの結果を結合する UNION 演算子を利用できます。この問題では、2 つのクエリを作成します:
クエリ 1:
SELECT ChargeNum, CategoryID, SUM(Hours) FROM KnownHours GROUP BY ChargeNum, CategoryID
このクエリは、ChargeNum、CategoryID、およびそれぞれの時間の合計を取得します。 「KnownHours」テーブルからの組み合わせ。
クエリ2:
SELECT ChargeNum, 'Unknown' AS CategoryID, SUM(Hours) FROM UnknownHours GROUP BY ChargeNum
このクエリは、「UnknownHours」テーブルの各エントリの ChargeNum と時間の合計を取得し、CategoryID として「Unknown」を割り当てます。
両方を組み合わせます。 UNION ALL を使用したクエリは、目的の出力を生成します。
SELECT ChargeNum, CategoryID, SUM(Hours) FROM KnownHours GROUP BY ChargeNum, CategoryID UNION ALL SELECT ChargeNum, 'Unknown' AS CategoryID, SUM(Hours) FROM UnknownHours GROUP BY ChargeNum
UNION ALL 演算子重複を削除せずに結果を結合し、結合されたデータの完全なビューを提供します。
以上が構造は似ているがカテゴリが異なる 2 つのテーブルを 1 つの出力テーブルに結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。