根据用户ID计算出现次数

时间:2013-07-31 02:18:07

标签: mysql sql jasper-reports sugarcrm

我对SQL / MySQL和Stackoverflow很新,我试图通过 iReport 创建一个查询(虽然我不必使用 iReport < / em>) SugarCRM CE 。我需要的是创建一个报告,显示链接到特定“用户”(员工)的“推荐”,“语音邮件”,“电子邮件”和“Call_ins”的数量。我目前设置的查询工作;但它会多次运行数据,生成200多页的报告。这是我目前使用的代码:

SELECT
 ( SELECT COUNT(*) FROM `leads` INNER JOIN `leads_cstm` ON `leads`.`id` = `leads_cstm`.`id_c` WHERE (leadtype_c = 'Referral' AND users.`id` = leads.`assigned_user_id`) ),
 ( SELECT COUNT(*) FROM `leads` INNER JOIN `leads_cstm` ON `leads`.`id` = `leads_cstm`.`id_c` WHERE (leadtype_c = 'VM' AND users.`id` = leads.`assigned_user_id`) ),
 ( SELECT COUNT(*) FROM `leads` INNER JOIN `leads_cstm` ON `leads`.`id` = `leads_cstm`.`id_c` WHERE (leadtype_c = 'Email' AND users.`id` = leads.`assigned_user_id`) ),
 users.`first_name`,users.`last_name`
FROM
 `users` users,
 `leads` leads

我很感激任何指导!

2 个答案:

答案 0 :(得分:2)

您想使用条件求和。以下使用MySQL语法:

SELECT sum(leadtype_c = 'Referral') as Referrals,
       sum(leadtype_c = 'VM') as VMs,
       sum(leadtype_c = 'Email') as Emails,
       users.`first_name`, users.`last_name`
FROM users join
    `leads`
     on  users.`id` = leads.`assigned_user_id` INNER JOIN
     `leads_cstm`
     ON `leads`.`id` = `leads_cstm`.`id_c`
group by users.id;

答案 1 :(得分:0)

您可以将COUNTCASE一起使用:

SELECT u.first_name, 
    u.last_name, 
    count(case when leadtype_c = 'Referral' then 1 end),
    count(case when leadtype_c = 'VM' then 1 end),
    count(case when leadtype_c = 'Email' then 1 end)
FROM users u
    JOIN leads l ON u.id = l.assigned_user_id
    JOIN leads_cstm lc ON l.id = lc.id_c
GROUP BY u.id

要匹配您的确切结果,您应该使用OUTER JOIN,但这可以让您了解。