簡體   English   中英

從一個表中獲取行數,其中另一個表中的至少一個相關項與條件匹配

[英]Getting count of rows from one table where at least one related item from another table matches criteria

我有“產品”表和相關的“變體”表,一種產品可以有一個或多個變體。 'variations' 表有 'status' 列,它的值可以是 0 或 1。我想獲取至少具有狀態 1 變體的產品 (COUNT()) 的數量。如何進行查詢? [編輯]好的,我認為如果我簡化問題,我將擺脫表結構,但是,這里我們 go (僅與問題相關的列和一些模擬數據):

它實際上是 3 個鏈接表:表 1:“產品”

ID 姓名
1 T恤
2
3 短褲

表 2:變化

ID product_id
1 1
2 1
3 2
4 2
5 3
6 3
7 3

表 3:庫存

變體_id 數量 狀態 [0 或 1]
1 10 1
2 15 1
3 0 0
4 0 0
5 0 0
6 3 1
7 0 0

因此,有了這些數據,我想知道有多少產品的“狀態”1 的“變體”中至少有 1 個 - 在本例中為 2(產品 1 和 3 與狀態 1 有一些變體,產品 2 沒有)。

您只需要SUM GROUP BY products.id 的所有數量,標准為 stock.status 等於 1。

SELECT id, name, SUM(quantity) AS total_quantity
FROM Products pr
LEFT JOIN Variations va ON pr.id = va.product_id
LEFT JOIN Stock st ON st.variation_id = va.id
WHERE st.status = 1
GROUP BY pr.id

加入兩個表並在狀態列上應用 where 過濾器

select count(*) as cnt
from
products p
join variations v
on p.product_id = v.product_id
where status = 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM