2012-08-30 155 views
0

我根据供应商提供的产品类型将供应商记录插入到我的表中。INSERT INTO,基于WHERE子句中的COUNT

我正在做这样的事情;

INSERT INTO RedItems (ID, Name, NumItems) 
SELECT ID, Name, NULL 
FROM supplier 
WHERE status = 'Supplier' 

不过,我只想补充一点,已经提供了至少一个“红色”项目的供应商。

“红”项没有特定的字段,“红”是产品栏中的一种类型。

如何用这种方式构造我的WHERE子句?

编辑

供应商(表)

ID / Name / Status / Product 
1 / Smith / Supplier / Red 
2 / Baxter / Supplier / Round 

RedItems(表)

ID / Name / NumItems 
1 / Smith /  23 

哪里NUMITEMS是从供应商的总(红色)项目。

+1

请显示一些样品数据 –

+0

您在哪里存储红色项目的指标? – Taryn

+0

红色是'产品'领域的东西。 I.E.在产品领域内可能有红色,蓝色,圆形,方形等。 – William

回答

1

如果数据是在同一个表,那么你可以做这样的事情:

INSERT INTO RedItems (ID, Name, NumItems) 
SELECT ID, Name, count(product) 
FROM mytable 
WHERE status = 'Supplier' 
    AND product = 'red' 
GROUP BY ID, Name 

如果没有,那么

INSERT INTO RedItems (ID, Name, NumItems) 
SELECT t1.ID, t1.Name, count(p.product) 
FROM mytable t1 
INNER JOIN products p 
    ON t1.id = p.supplierID 
WHERE t1.status = 'Supplier' 
    and p.product = 'red' 
GROUP BY t1.ID, t1.Name 
1
INSERT INTO RedItems (ID, Name, NumItems) 
SELECT suppliers.ID, suppliers.Name, count(distinct products.id) 
FROM suppliers 
    inner join products on suppliers.id = products.supplierid 
WHERE status = 'Supplier' and products.type='red' 
group by suppliers.ID, suppliers.Name 
2

我只是想添加已供应至少一个“红色”的供应商 商品

INSERT INTO RedItems (ID, Name, NumItems) 
SELECT ID, Name, COUNT(Product) 
FROM supplier 
WHERE status = 'Supplier' 
    AND Product = 'RED' 
GROUP BY ID, Name 
HAVING COUNT(Product) >= 1