我有几个表:分组数据连接
products: id (int), name (varchar)
colors: id (int), name (varchar)
sizes: id (int), name (varchar)
products_colors: color_id (int), product_id (int)
products_sizes: size_id (int), product_id (int)
我想只产生一个查询,返回所有的信息(而不是3个查询,1产品,1颜色和一个用于大小) 我发现,我能做些什么“体面”,使用GROUP_CONCAT但该查询返回的重复数据,不知道这是发生因为GROUP_CONCAT或JOINS
SELECT products.id, products.name, CONCAT("[", GROUP_CONCAT("'", colors.name, "'"), "]") colors, CONCAT("[", GROUP_CONCAT("'", sizes.name, "'"), "]") sizes
FROM products
LEFT JOIN products_sizes ON products_sizes.product_id = products.id
LEFT JOIN sizes ON sizes.id = products_sizes.size_id
LEFT JOIN products_colors ON products_colors.product_id = products.id
LEFT JOIN colors ON colors.id = products_colors.color_id
GROUP BY products.id
请注意,我正在使用CONCAT将分组数据格式化为JSON 如果在products_colors一根火柴products_sizes的数据在GROUP_CONCAT
我需要的,如果有可用的颜色或大小来回报所有产品无论复制
尝试添加独特的group_concat函数吗? – 2014-09-21 02:25:28