[英]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 JOIN
比RIGHT JOIN
更容易理解(“保留第一个表中的所有行”与“保留最后一个表中的所有行,我尚未阅读”)。 但是,此查询可能仅需要一个INNER JOIN
。 Warehouses
应该是第一个表,因为您的问题是关于这个实体的。 HAVING
子句进行比较。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.