2012-08-30 2 views
0

공급 한 제품 유형에 따라 공급 업체 레코드를 제 테이블에 삽입합니다.INSERT INTO, WHERE 절의 COUNT에 기초하여

나는 이렇게하고있다.

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

그러나 나는 단지 적어도 하나의 '레드'항목 를 제공 한 공급 업체를 추가 할.

'빨간색'항목에는 특별한 필드가 없으며 'Red'는 제품 열의 유형입니다.

어떻게 이런 식으로 WHERE 절을 구성합니까?

편집 NUMITEMS가 공급 업체의 총 (적색) 항목입니다

공급 (테이블)

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

RedItems (테이블)

ID / Name / NumItems 
1 / Smith /  23 

. 데이터가 같은 테이블에있는 경우

+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

을 내가 단지를 추가 할 최소한 하나의 'Red'를 공급 한 공급 업체 품목

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