0

3 つのテーブル、製品、カテゴリ、および couple_product_category があります。結合されたカテゴリの文字列を使用して、データベースからすべての製品が必要です。それはうまくいきますが、まだカテゴリに結合されていない新製品を追加すると、返されません。

パフォーマンスを防ぐための最速の方法が必要です。これは私が今持っているものです:

SELECT 
   product.id, 
   product.product_name, 
   GROUP_CONCAT(productcategory.name SEPARATOR '; ') AS categories
FROM
   m_catalog_products AS product
LEFT JOIN 
   couple_product_category AS category
ON 
   category.product_id = product.id
INNER JOIN 
   m_catalog_productcategoy AS productcategory
ON 
   productcategory.id = category.category_id
GROUP BY 
   product.id
ORDER BY product.id, product.is_active ASC

これにより、次のような結果になります。

ID  Name       Categories
--  ---------  ----------------------
1   Product A  Category A; Category B
2   Product B  Category C

ただし、製品 C がまだどのカテゴリにも結合されていない場合は、次のように表示されます。

ID  Name       Categories
--  ---------  ----------------------
1   Product A  Category A; Category B
2   Product B  Category C
3   Product C  
4

1 に答える 1

1

LEFT JOIN m_catalog_productcategoyの代わりにINNER JOIN:

SELECT 
   p.id, 
   p.product_name, 
   GROUP_CONCAT(pc.name SEPARATOR '; ') AS categories
FROM m_catalog_products AS p
LEFT JOIN couple_product_category AS c ON c.product_id = p.id
LEFT JOIN m_catalog_productcategoy AS pc ON pc.id = c.category_id
GROUP BY  p.id
ORDER BY p.id, p.is_active ASC;
于 2013-03-15T15:45:42.150 に答える