1. ホーム
  2. mysql

2つのテーブルで、2つのcount(*)の結果を足し合わせるには?

2023-10-14 07:34:57

質問

2つのテーブルがあります。おもちゃとゲームです。

+--------------------+------------------+
| Field              | Type             |
+--------------------+------------------+
| toy_id             | int(10) unsigned |
| little_kid_id      | int(10) unsigned |
+--------------------+------------------+

+--------------------+------------------+
| Field              | Type             |
+--------------------+------------------+
| game_id            | int(10) unsigned |
| little_kid1        | int(10) unsigned |
| little_kid2        | int(10) unsigned |
| little_kid3        | int(10) unsigned |
+--------------------+------------------+

小さな子供は複数のおもちゃを持つことができます。 小さな子供は一度に複数のゲームに参加することができます。

little_kidが関わっているおもちゃ+ゲームの総数を教えてくれるクエリが欲しいです。

基本的に、私はこれら2つのクエリの合計が欲しいのです。

SELECT COUNT(*) FROM Toys WHERE little_kid_id = 900.SELECT COUNT(*) FROM Toys WHERE little_kid_id = 900;
SELECT COUNT(*) from Games WHERE little_kid1 = 900 
                              またはlittle_kid2 = 900 
                              OR little_kid3 = 900;

これを 1 つの SQL クエリで取得することは可能でしょうか。 もちろん、プログラム的に合計することはできますが、それはあまり望ましくありません。

(作為的な例でスキーマが非効率に見えることは承知しています。 スキーマを変更することはできないと仮定しましょう)。

どのように解決するのか?

ラップして、サブクエリを使用します。

SELECT
(SELECT COUNT(*) FROM Toys WHERE little_kid_id = 900)+
(SELECT COUNT(*) from Games WHERE little_kid1 = 900 
                              OR little_kid2 = 900 
                              OR little_kid3 = 900)
AS SumCount

ほらね!