我有幾個表:分組數據連接
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