![](/img/trans.png)
[英]Getting rows from one table that do not have related rows in other tables meeting specific criteria without subquery
[英]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.