2

Products という名前のテーブルと Products_Category という名前のテーブルの 2 つがあります。各カテゴリ(カテゴリごとにグループ化)の在庫数を表示し、カテゴリの名前も表示したい。Products テーブルには各製品の在庫数がありますが、Products_Category テーブルにはカテゴリ名があります。2つを一緒に表示するにはどうすればよいですか?何らかの結合を使用する必要がありますか?

ここに私が取得しようとしているものがあります:

Category_Name --------- Sum(Products_Inventory)

------本 -------------------- 1 ----------
------おもちゃ----- ----- 2 ----------

しかし、今のところ表示できるのは、次のよう に、カテゴリではなくカテゴリIDだけです。

------- 1 ------------------------ 1 ----------
------- 2 ------------------------ 2 ----------

4

3 に答える 3

1

とを使用JOINGROUP BYます。

SELECT PC.Category_Name, Sum(P.Products_Inventory)
FROM Products_Category PC
   INNER JOIN Products P ON PC.ProductId = P.ProductId
GROUP BY PC.Category_Name

ところで -- これは、各テーブルに ProductId フィールドがあることを前提としています。そして、私が提案できるとしたら、おそらくカテゴリ テーブルも必要です (正規化に適しています)。ProductId と CatogryId を Products_Category テーブルに保存します。

幸運を。

于 2013-02-05T03:25:16.743 に答える
0

最も簡単な方法は、これを行うことです..

SELECT a.Category_Name, Sum(b.Products_Inventory)
FROM Products_Category a, Products b
Where a.ProductId = b.ProductId
GROUP BY a.Category_Name

それが役に立てば幸い

于 2013-02-05T04:19:23.463 に答える
0

これらのクエリでproduct_idは、両方のテーブルにあると想定しています (間違っていると推測した場合は、正しいフィールド名を使用する必要があります)。Product_Category.descriptionカテゴリ名を持つフィールドの名前としても使用しています。

このクエリはすべてのカテゴリを取得し、テーブルにない製品カテゴリのカウントは 0になりProductます。

在庫のある製品Productごとに 1 つのレコードが含まれている場合(つまり、4 冊の本は 4 つのレコードを意味します)、必要な機能です。ProductCOUNT()

SELECT Products_Category.description, COUNT(Product.product_id) AS category_count
FROM Products_Category
   LEFT OUTER JOIN Products ON Products_Category.product_id=Products.product_id
GROUP BY Products_Category.description

在庫のあるタイプのProduct製品ごとに 1 つのレコードが含まれている場合(つまり、4 冊の本は 4 の 1 つのレコードを意味します)、必要な機能です。product_countSUM()

SELECT Products_Category.description, SUM(Product.product_count) AS category_count
FROM Products_Category
   LEFT OUTER JOIN Products ON Products_Category.product_id=Products.product_id
GROUP BY Products_Category.description

そのカテゴリに在庫がある場合にのみレコードを返したい場合は、 を次のように変更しLEFT OUTER JOINますINNER JOIN

SELECT Products_Category.description, SUM(Product.product_count) AS category_count
FROM Products_Category
   INNER JOIN Products ON Products_Category.product_id=Products.product_id
GROUP BY Products_Category.description
于 2013-02-05T03:25:44.640 に答える