一尘不染

如何在两个不同的表上一起添加两个count(*)结果?

mysql

我有两个桌子:玩具和游戏。

+--------------------+------------------+
| 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涉及的玩具和游戏的总数。

基本上,我想要这两个查询的总和:

从little_kid_id = 900的玩具中选择COUNT(*);
从游戏中选择COUNT(*),其中little_kid1 = 900 
                              或little_kid2 = 900 
                              或little_kid3 = 900;

是否可以在单个SQL查询中获得它?显然,我可以通过编程的方式对它们进行汇总,但这并不是很理想。

(我意识到人为的例子使模式看起来效率低下。让我们假设我们无法更改模式。)


阅读 793

收藏
2020-05-17

共1个答案

一尘不染

包装它们并使用子查询:

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

瞧!

2020-05-17