0

サプライヤーが提供した製品の種類に基づいて、サプライヤー レコードをテーブルに挿入しています。

私はこのようなことをしています;

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

ただし、少なくとも 1 つの「赤」アイテムを提供したサプライヤのみを追加したいと考えています。

「赤」の項目には特に欄はありません。「赤」は製品列のタイプです。

この方法で WHERE 句を作成するにはどうすればよいですか?

編集

仕入先(表)

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

RedItems (表)

ID    /    Name    /    NumItems
1     /    Smith    /       23

NumItems は、そのサプライヤーからの合計 (赤) アイテムです。

4

3 に答える 3

2

少なくとも 1 つの「赤」アイテムを提供したサプライヤーのみを追加したい

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
于 2012-08-30T10:33:26.420 に答える
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
于 2012-08-30T10:26:30.310 に答える
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
于 2012-08-30T10:26:45.910 に答える