繁体   English   中英

MySQL查询-从一个中选择,从另一个表中计数

[英]MySQL query - select from one, count from another table

我有两个表的数据库-“仓库”和“盒子”。 每个框都有带有仓库代码的字段,每个仓库-“容量”字段。

目的是仅查找“过度填充”的仓库(仓库的容量小于具有此仓库代码的所有箱子的数量)。

因此,我计算所有箱子并通过此查询加入仓库容量:

SELECT Warehouses.Code, Warehouses.Capacity, COUNT(Boxes.Code)
FROM `Warehouses` RIGHT JOIN
     `Boxes`
     on Warehouses.Code = Boxes.Warehouse
GROUP BY Boxes.Warehouse

结果:

------------------------------
Code | Capacity | COUNT
------------------------------
1    |    3     | 4
------------------------------
2    |    4     | 2
------------------------------
3    |    7     | 2
------------------------------
4    |    2     | 1
------------------------------

这将返回我的仓库容量并计算其中的盒子,但我不知道如何以及在何处比较这些数字。

您可以在HAVING子句中执行此操作:

SELECT w.Code, w.Capacity, COUNT(b.Code)
FROM `Warehouses` w LEFT JOIN
     `Boxes` b
     on w.Code = b.Warehouse
GROUP BY w.Code, w.Capacity
HAVING w.Capacity < COUNT(b.Code);

笔记:

  • 一般而言, LEFT JOINRIGHT JOIN更容易理解(“保留第一个表中的所有行”与“保留最后一个表中的所有行,我尚未阅读”)。 但是,此查询可能仅需要一个INNER JOIN
  • 大概,“ Warehouses应该是第一个表,因为您的问题是关于这个实体的。
  • 聚合后, HAVING子句进行比较。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM