2

各カテゴリのすべての製品の数を取得することを解決しようとしています。製品はPRODUCT_IDによって一意に識別されます。PRD_PRODUCTSテーブルにはCATEGORY_IDフィールドはありませんが、すべての製品はPRODUCT_IDとCATEGORY_IDの結合テーブルPRD_CATEGORIESに結合されます。

私は2つのテーブルを持っています:

PRD_PRODUCTSおよびPRD_CATEGORIES。

PRD_PRODUCTS
------------
PRODUCT_ID  - varchar(64)
TITLE - varchar(64)

PRD_CATEGORIES
--------------
CATEGORY_ID - varchar(64)
PRODUCT_ID - varchar(64)
TITLE - varchar(64)

データ例:
PRODUCT_ID:5e313ec3bf7b967569eec196b4693829(各製品に割り当てられた一意のID)
タイトル:製品名1(製品名)
PARENT_CATEGORY_ID :(これはCATEGORY_IDと結合します)
CATEGORY_ID:10(各カテゴリの一意の識別子)

これは私が現在作業しているものであり、エラーの後にエラーが発生します。PRODUCT_IDフィールドが存在しないという最後のエラーがありますが、正確に存在していると確信しています。これに新しい目を向けることを望んでいます...

$db->query="SELECT count(a.PRODUCT_ID), 

    a.PRODUCT_ID,
    a.TITLE 

    FROM 

    PRD_PRODUCTS AS a, 
    PRD_CATEGORIES AS b

    LEFT JOIN PRD_PRODUCTS ON a.PRODUCT_ID = b.PRODUCT_ID

    LEFT JOIN PRD_CATEGORIES ON b.CATEGORY_ID = c.CATEGORY_ID 

WHERE a.SHOW_ON = 'A' 

GROUP BY a.PRODUCT_ID

ORDER BY a.TITLE DESC";
4

2 に答える 2

1

こんなものばかり探していませんか?

SELECT CATEGORY_ID, COUNT(PRODUCT_ID) AS product_count
  FROM PRD_CATEGORIES
  GROUP BY CATEGORY_ID

フィルタを使用して更新:

SELECT pc.CATEGORY_ID, COUNT(pc.PRODUCT_ID) AS product_count
  FROM PRD_CATEGORIES pc
      ,PRD_PRODUCTS p
  WHERE pc.PRODUCT_ID = p.PRODUCT_ID
    AND p.SHOW_ON = 'A'
  GROUP BY CATEGORY_ID
于 2012-05-19T02:25:44.963 に答える
0

いいえ、2 つのテーブルを結合して、どの製品がどのカテゴリに属しているかを知る必要があります。元のコードが 2 回参加する理由がわかりません。彼が何をしようとしているのか理解できれば、彼は製品 ID をカテゴリに結合し (またはその逆)、個別の製品 ID の数を数えるべきです... そうですか?

また、グループ化は、合計しようとしているものであるため、カテゴリ別のグループに変更する必要があります...

SELECT 
     b.TITLE 
    ,count(distinct a.PRODUCT_ID)
 from PRD_PRODUCTS a
 left join  PRD_CATEGORIES b on b ON a.PRODUCT_ID = b.PRODUCT_ID
GROUP BY b.TITLE
于 2012-05-19T02:33:04.040 に答える