簡體   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