2015-01-15 98 views
-1

我要算每一類產品內部像我有具有兩個兒童的B和C.計數類別的產品與MySQL

在B類具有10個產品和C類有5個產品A類。

我想寫一個查詢,產品計數如A = 15B = 10C = 5

我寫了一個查詢,只計算子類別。下面

SELECT 
    c.`id`, 
    c.`parent_id`, 
    c.`name`, 
    c.`slug`, 
    c.`route_id`, 
    c.`description`, 
    c.`excerpt`, 
    c.`sequence`, 
    c.`image`, 
    c.`seo_title`, 
    c.`meta`, 
    c.`enabled`, 
    (SELECT 
      COUNT(`product_id`) 
     FROM 
      HM_category_products 
     WHERE 
      HM_category_products.category_id IN (SELECT 
        HM_categories.`id` 
       FROM 
        HM_categories 
       WHERE 
        (id = c.`id` OR id = c.`parent_id`))) AS count 
FROM 
    `HM_categories` AS c 

我的查詢給出編輯: - 下面是我的表結構。這只是一個例子。

Category Table 

    id parent_id name      slug        enabled 
    1 0   Mobiles & Tablets   mobiles-tablets      1 
    2 1   Mobile Phones    mobile-phones      1 
    3 1   Tablets      tablets        1 
    4 1   Mobile Accessories   mobile-accessories     1 
    5 0   Electronics & Computers  electronics-computers    1 
    6 5   Cameras & Accessories  cameras-accessories     1 
    7 5   TV - Video - Audio   tv-video-audio      1 





    Category Product Table 

    product_id category_id 
    1    2 
    2    2 
    3    2 
    4    2 
    5    3 
    6    2 
    7    3 
    8    3 
    9    3 
    10    2 
    11    3 
    12    2 
    13    2 
    14    2 
    15    2  
+1

這將有助於你發佈數據shema和一些示例數據行。 – Melon

回答

1

你甲肝「按組」使用的東西,如:

SELECT 
    category_id, COUNT(*) 
FROM 
    HM_category_products 
GROUP BY category_id 

這將讓你的表HM_category_products通過CATEGORY_ID分組,就知道每個類別如何鬃毛行其在表,你知道每個類別的產品數量是什麼意思。然後你可以加入這個結果表與第一類獲取類別信息。 (對不起,我的英文)

的GROUP BY語句用於結合骨料 功能組的結果集由一個或多個列。 SQL GROUP BY Statement

爲abaut更多信息 「集團通過」 讀 12.16.2 GROUP BY Modifiers12.16.1 GROUP BY (Aggregate) Functions

編輯:我看你現在whant什麼。我已經給你方向,但在這裏它的一步furder:免責聲明:此查詢它只是舉例來說,DOSNT工作

CREATE VIEW view_2 AS 
    SELECT 
     category_id, COUNT(*) AS product_sum 
    FROM 
     HM_category_products 
    GROUP BY category_id 

CREATE VIEW view_1 AS 
    SELECT 
     * 
    FROM 
     HM_categories 
      LEFT JOIN 
     view_2 AS a ON HM_categories.id = a.category_id; 


SELECT 
    id, 
    name, 
    (SELECT 
      SUM(product_sum) 
     FROM 
      view_1 
     WHERE 
      parent_id = final.id) as product_count 
FROM 
    HM_categories AS final; 

這樣你會得到一個父類的產品,你唯一缺少的一個CASE最後選擇「product_count」給孩子的分類,但這很容易,因爲你已經擁有了view_1(再次對不起我的英語)

+0

請仔細閱讀我的詢問,我想要什麼。 –

+0

這將有助於您發佈數據shema和一些示例數據行。 – Melon

+1

@hirasingh如果你對那些試圖幫助的人不禮貌,不要求求幫助。 – Strawberry