0

を使用して複数のテーブル内でカウントしようとしていますがJOIN、複数JOINの s を作成すると、COUNTs が間違ってカウントされました。

基本的に、次の名前の4つのテーブルがあります。

  1. predective_search
  2. predective_to_product
  3. predective_to_category
  4. predective_to_manufacturer

テーブル predective_search で同じ ID を持つ製品、カテゴリ、およびメーカーの総数をカウントしたいと考えています。

これが私のコードです:

SELECT * , 
    COUNT(pp.predictive_id) AS total_products, 
    COUNT(pc.predictive_id) AS total_categories, 
    COUNT(pm.predictive_id) AS total_manufacturers 
FROM predictive_search ps 
LEFT JOIN predictive_to_product pp ON (ps.predictive_id = pp.predictive_id) 
LEFT JOIN predictive_to_category pu ON (ps.predictive_id = pc.predictive_id) 
LEFT JOIN oc_predictive_to_manufacturer pm ON (ps.predictive_id = pm.predictive_id)    
GROUP BY ps.predictive_id

GROUP BY必要だと思います。これを行う方法がないので、私はこれで立ち往生しています

4

1 に答える 1

0
SELECT 
    ps.*,
    agg_pp.total_products,
    agg_pc.total_categories,
    agg_pm.total_manufacturers
FROM predictive_search ps 
LEFT JOIN ( 
        SELECT pp.predictive_id, COUNT(*) AS total_products
        FROM predictive_to_product pp 
        GROUP BY pp.predictive_id 
    ) agg_pp ON ps.predictive_id = agg_pp.predictive_id
LEFT JOIN ( 
        SELECT pc.predictive_id, COUNT(*) AS total_categories
        FROM predictive_to_category pc 
        GROUP BY pc.predictive_id 
    ) agg_pc ON ps.predictive_id = agg_pc.predictive_id
LEFT JOIN ( 
        SELECT pm.predictive_id, COUNT(*) AS total_manufacturers
        FROM predictive_to_category pm 
        GROUP BY pm.predictive_id 
    ) agg_pm ON ps.predictive_id = agg_pm.predictive_id
于 2013-11-05T16:43:34.287 に答える