mysql - 显示带有类别的产品列表不会显示未耦合的类别

标签 mysql sql database select

我有 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  

最佳答案

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;

关于mysql - 显示带有类别的产品列表不会显示未耦合的类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15436521/

相关文章:

php - 这个 PHP 类是否针对 mysql 数据库访问进行了优化?

php - 从mysql数据库到php的唯一字段

mysql - 删除重复行,同时对另一行进行分组

mysql - 如何回滚 MySQL 中的最后一个删除命令?

android - 是否可以在我的手机上访问 Android 应用程序的 SQLite 数据库?

database - Django 中的任意数据库连接

php - WordPress $wpdb->get_results 显示表格中的所有行

sql - 创建 3 个月、6 个月和 12 个月的评估查询

php - 有没有可能的方法仅通过 mysql 中的 phpmyadmin 存储当前时间

SQL请求按列中的值查找表中的项目