[英]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.