SQL在添加值时从多个表中选择语句

时间:2013-02-01 23:28:35

标签: mysql sql select

我在编写好的陈述时遇到了一些麻烦。当我查询特定的“公司”但我想获得数据库中所有公司的价值时,我能够实现我想要的。

基本上我有3个表:Users,Companies,Plans_ExchangeMailbox。我需要做的是查询每个公司使用的计划数量。计划在用户表中的用户级别分配。

这是我的表格布局:

用户

DisplayName的

CompanyCode(这是Companies表中CompanyCode的ID)

MailboxPlan(这是Plans_ExchangeMailbox表中的ID)

公司

公司名称

企业编码

Plans_ExchangeMailbox

MailboxPlanName

MailboxPlanID

以下是我要生成的格式: CompanyName,MailboxPlanName,Count(这是公司的MailboxPlanID数)

我能够让这个工作,但问题是它一次只能做一家公司并且它没有获得CompanyName:

SELECT
Plans_ExchangeMailbox.MailboxPlanName,
SUM(CASE WHEN Users.MailboxPlan = Plans_ExchangeMailbox.MailboxPlanId THEN 1 ELSE 0      END) AS PlanCount
FROM
Plans_ExchangeMailbox, Users
WHERE
Users.CompanyCode='CC0'
GROUP BY 
Plans_ExchangeMailbox.MailboxPlanName

最终格式如何:

标题:CompanyName,PlanName,Count

值:

Microsoft,Bronze Plan,5

微软,黄金计划,20

戴尔,青铜计划,3

戴尔,白银计划,80

等.....

1 个答案:

答案 0 :(得分:0)

试试这个:

SELECT
     C.CompanyName,
     E.MailboxPlanName,
     COUNT(1) Cnt
FROM Companies C
    JOIN Users U
       ON C.CompanyCode = U.CompanyCode
    JOIN Plans_ExchangeMailbox E
       ON U.MailboxPlan = E.MailboxPlanID
GROUP BY 
     C.CompanyCode,
     C.CompanyName,
     E.MailboxPlanID,
     E.MailboxPlanName

如果有不同的公司或具有相同名称的MailboxPlan,则由C.CompanyCode和E.MailboxPlanID分组。如果不是,您可以将其从GROUP BY clause中删除。