ホームページ  >  記事  >  データベース  >  mysql で 1 つの SQL を使用して、結果セットに関連付けることができない複数の SQL をカプセル化する方法

mysql で 1 つの SQL を使用して、結果セットに関連付けることができない複数の SQL をカプセル化する方法

王林
王林転載
2023-05-27 10:24:47655ブラウズ

問題処理プロセス

ビジネス シナリオを簡単に説明します。理解を容易にするために、ビジネス要件は簡略化されています。

現在、配布活動が行われています。誰もが配布者になって活動を共有できます。誰かが共有活動のリンクを通じて購入すると、配布者は利益情報を得ることができます。もちろん、配布活動の商品を購入することもできますリンクを共有せずに直接購入することになりますが、配信収入はありません。テーブル構造としては、すべての注文は注文テーブル order に格納され、配布関係のあるものについては、配布結合情報(販売者と配布者)が レコード に記録されます。 table. 、配布せずに直接購入したものは、レコードを record テーブルに追加しません。ここで、その日が 2022.11.08 であると仮定して、その日の注文と配布レコードの合計数をカウントする必要があります。

別の統計計算の場合は非常に簡単で、合計数を直接数えるだけです:

その日の注文の合計数を数えます:

SELECT COUNT(1) total_couut FROM order WHERE DATE_FORMAT(order_create_time,'%Y-%m-%d') = '2022-11-08'

Countその日の配信レコードの総数:

SELECT COUNT(1) record _count FROM record WHEREDATE_FORMAT(create_time,'%Y-%m-%d') = '2022-11-08'

しかし、2 つの異なる統計情報を 1 つの結果セットにカプセル化するにはどうすればよいでしょうか? これが解決策であり、union all を使用して並列クエリを実行し、次に、合計クエリを実行します。具体的な実装方法は以下の通りです。

1. 並列クエリには Union all を使用します。

クエリされたパラメータ情報の一貫性を確保するために、注文の総数をクエリするときは、配布レコードの総数が補足され、クエリを実行するときは配布レコードの総数が補足されます。配布レコードの総数、注文の総数が補足されます 具体的な実装 クエリの結果は次のとおりです:

SELECT COUNT(1)  total_couut,0 record_count FROM order WHERE DATE_FORMAT(order_create_time,'%Y-%m-%d') = '2022-11-08'
union all 
SELECT 0 total_count,COUNT(1) record _count FROM record WHEREDATE_FORMAT(create_time,'%Y-%m-%d') = '2022-11-08'

クエリの結果は次のとおりです:

mysql で 1 つの SQL を使用して、結果セットに関連付けることができない複数の SQL をカプセル化する方法

2.合計処理

合計注文数と合計配布レコードのクエリが完了しましたので、次に処理する必要があるのは、それらを結果セットにカプセル化する方法です。処理方法も非常に簡単です。つまり、対応するフィールド値がすべて 0 であるため、直接加算されます。具体的な実装は次のとおりです。

select sum(t.total_count) total_count, sum(t.record_count) record_count from
(SELECT COUNT(1)  total_couut,0 record_count FROM order WHERE DATE_FORMAT(order_create_time,'%Y-%m-%d') = '2022-11-08'
union all 
SELECT 0 total_count,COUNT(1) record _count FROM record WHEREDATE_FORMAT(create_time,'%Y-%m-%d') = '2022-11-08') t

クエリの結果は次のとおりです。

mysql で 1 つの SQL を使用して、結果セットに関連付けることができない複数の SQL をカプセル化する方法

以上がmysql で 1 つの SQL を使用して、結果セットに関連付けることができない複数の SQL をカプセル化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。