2012-07-24 45 views
1

我想通過子字符串分組。我只得到一個結果:MySQL GROUP BY與子字符串不循環通過

Region = Coastal, Value (R) = 1144900. 

我應該得到2個結果。

這是我的代碼:

SELECT 
    DISTINCT SUBSTRING_INDEX(`team_name`, '-', 1) AS 'Region', 
    SUM(`opportunities`.`value`) AS 'Value (R)' 
FROM 
    `opportunities` 
    LEFT JOIN cf_type_link_data ON cf_type_link_data.sourceid = opportunities.id 
    LEFT JOIN cf_lu_type_fields ON cf_type_link_data.fieldid = cf_lu_type_fields.id 
    LEFT JOIN cf_lu_types_fields_dropdown ON cf_type_link_data.`value` = cf_lu_types_fields_dropdown.id AND cf_lu_type_fields.id = cf_lu_types_fields_dropdown.fieldid 
    LEFT JOIN `lu_teams` ON `lu_teams`.`contactid` = `opportunities`.`user_allocation` 
    LEFT JOIN `teams` ON `teams`.`id` = `lu_teams`.`teamid` 
    LEFT JOIN `lu_opportunity_status` ON `lu_opportunity_status`.`id` = `opportunities`.`status` 
WHERE 1 
    AND `cf_lu_types_fields_dropdown`.`values` = 'Building Project' 
    AND cf_lu_type_fields.fieldname = 'Scaffolding Segment' 
    AND (`opportunities`.`expecteddate` >= '2012-01-01' AND `opportunities`.`expecteddate` <= '2012-07-24') 
GROUP BY 'Region' 
ORDER BY cf_lu_types_fields_dropdown.`values`; 

任何幫助表示讚賞。

+0

我們需要查看您的表格數據的示例。 – 2012-07-24 12:51:26

回答

0

不能使用相同的別名從選擇中GROUP BY條款

嘗試

SELECT DISTINCT SUBSTRING_INDEX(team_name, '-', 1) AS 'Region', 
     SUM(opportunities.value) AS 'Value (R)'.... 

GROUP BY SUBSTRING_INDEX(team_name, '-', 1) 
ORDER BY cf_lu_types_fields_dropdown.values; 
+0

是的,你可以,MySQL允許它,不像SQL Server。 – 2012-07-24 12:51:49

+0

我得到兩個結果,但現在的問題是,在沿海這是結果之一,在沿海應該有2個結果(值是903400,但它應該是1144900,因爲它缺少另一個結果),但它只得到1 。 – Wesley 2012-07-24 13:04:13

0

儘量不要使用引號中的字段標識符 -

'區' - >區域

在你的情況下,你只能在結果數據集中看到一條記錄,因爲你按字符串'Region'分組,但你應該按值分組。

+0

如果按價值分組,我仍然得到1個結果。 – Wesley 2012-07-24 13:05:21

+0

然後您的查詢返回一個值。檢查這個值 - 'SUBSTRING_INDEX('team_name',' - ',1)',檢查WHERE條件。 – Devart 2012-07-24 13:42:28

+0

我知道它返回2個值。因爲我可以看到結果。上述答案的工作原理除了2個結果中的每個結果都有多個結果,但它只返回1. – Wesley 2012-07-24 14:02:39