2013-02-04 30 views
1

我尝试使用下面的查询写报告:一次或两列组合?

SELECT 
    DATE_FORMAT(date, '%Y-%m-%d') AS 'Date', 
    CONCAT(UCASE(MID(name,1,1)),MID(name,2)) AS 'Username', 
    COUNT(admin_id) AS 'Surveys Carried Out' 
FROM 
    `customer_surveys` 
LEFT JOIN `admin` ON customer_surveys.admin_id = admin.adminid 
GROUP BY DATE_FORMAT(date, '%Y-%m-%d') 

它通过之日起需要组(因为它是由日报告日)和admin_id(因为它是多少调查的计数已经通过该ID进行)

这在理论上应该有效。但看看它返回的结果,并将其与实际数据进行比较,它会一天一天显示它,但合并admin_id,因此当天第一次出现的是显示的那一个。任何帮助?

+0

你还没有通过admin_id分组。 – inhan

+0

Doh!我apoligise。我在网上阅读的文章说,我不能一次两个。也许我应该先检查一下。 – andy

+0

那么我们可以删除这个问题吗? – Strawberry

回答

3

,如果你想显示日期的记录每一个管理员,你应该有组它按日期和admin_id ATLEAST

GROUP BY DATE_FORMAT(date, '%Y-%m-%d'), admin_id 
1

这听起来像你只需要添加一个GROUP BY admin_id

SELECT 
    DATE_FORMAT(date, '%Y-%m-%d') AS 'Date', 
    CONCAT(UCASE(MID(name,1,1)),MID(name,2)) AS 'Username', 
    COUNT(admin_id) AS 'Surveys Carried Out' 
FROM `customer_surveys` 
LEFT JOIN `admin` 
    ON customer_surveys.admin_id = admin.adminid 
GROUP BY DATE_FORMAT(date, '%Y-%m-%d'), admin_id 

双方分组将让你的价值观通过DATE_FORMAT(date, '%Y-%m-%d')admin_id

1

你不需要组中的所有非聚合? Concat不是聚合

SELECT 
    DATE_FORMAT(date, '%Y-%m-%d') AS 'Date', 
    CONCAT(UCASE(MID(name,1,1)),MID(name,2)) AS 'Username', 
    COUNT(admin_id) AS 'Surveys Carried Out' 
FROM 
    `customer_surveys` 
LEFT JOIN `admin` ON customer_surveys.admin_id = admin.adminid 
GROUP BY DATE_FORMAT(date, '%Y-%m-%d'), CONCAT(UCASE(MID(name,1,1)),MID(name,2))