首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ShoreTel MySQL查询

ShoreTel MySQL查询
EN

Stack Overflow用户
提问于 2016-11-30 21:27:03
回答 1查看 1.7K关注 0票数 2

背景资料:

我的公司使用ShoreTel作为我们的VoIP服务;虽然他们的罐装报告很棒,但是他们有一些我们不需要的信息,而且演示文稿不是最容易使用的数据。我需要创建一个关于所有销售调用的单一报告,最终合并ShoreTel提供的两个固定报告--个人报告和组报告;合并这两个报告的原因是有一个数据透视表,销售经理可以查看并快速消化每个销售人员/组调用。我在MySQL工作台中反向构建了数据库,并找到了所有应该返回我想要的特定数据的表和列。下面列出了三个表和列,它们产生了我希望在我的报告/数据透视表中使用的数据:

代码语言:javascript
复制
agentactivity                   |   Connect                     |   Call
-------------                       ---------                       ------
agentactivity.StartTimeStamp    |   connect.PartyTable          |   call.CallType
agentactivity.EndTimeStamp      |   connect.ConnectReason       |   call.DialedNumber
agentactivity.AgentDN           |   connect.PartyID             |   call.CallerID
agentactivity.AgentFirstName    |   connect.PartyIDName         |   call.Duration
agentactivity.AgentLastName     |   connect.Duration            |   call.Extension 
agentactivity.State             |   connect.TalkTimeSeconds     |
agentactivity.WorkgroupDN       |                               |
agentactivity.WorkgroupName     |                               |

我需要帮助,因为我是使用MySQL的新手,因此我需要构建一个查询,用于挖掘我想要的数据;我可以构建单个查询,这些查询为我提供了数据的一部分(如下所示),但是当涉及到使用两个(更不用说三个)表时,它就开始崩溃了。我已经尝试了我自己的查询,尽管我想确保这在语法和可用性方面是正确的。如前所述,这样做的目的是创建一个包含数据库中所有所需信息的数据透视表。

以前读过/试图:

http://stackoverflow.com/questions/14191506/how-to-join-two-tables <-帮助了一点,但不是很多;仍然很困惑。 http://stackoverflow.com/questions/22418525/shoretel-outgoing-calls-query <--提供更多的信息;能够建立在我自己的基础上,只能用于单个结果。 http://stackoverflow.com/questions/20405898/multiple-select-case-staments-in-query-for-shoretel-reports?rq=1 <--不是我任务所需要的。 to/69423-shoretel-call-detail-record-lookup <--最有帮助的是,我试着定制它以满足我的需求;失败了。 https://www.experts-exchange.com/questions/28286779/Shoretel-SQL-query-in-Excel.html <--无论如何都没有用,因为我需要正确的查询才能将数据转储到Excel中。 http://dev.mysql.com/doc/refman/5.7/en/join.html <--这是我开始讨论表的“Joins”的地方,但它开始让人感到困惑。

我对单个数据返回的查询(老实说,这些查询最初不是我的查询,我定制它们是为了满足我的需要):

代码语言:javascript
复制
SELECT PartyIDName,GroupID,ConnectTime,DisconnectTime,ConnectReason 
FROM shorewarecdrarchive.`connect` 
WHERE PartyType=12;

SELECT StartTime,DialedNumber,CallerID,EndTime,Extension,CallType 
FROM shorewarecdrarchive.`call` 
WHERE Extension=6333 AND date(StartTime) BETWEEN '2016-08-01' AND '2016-08-16' AND CallType=3;

SELECT ID, StartTime, StartTimeMS, EndTime, EndTimeMS, TIMEDIFF(EndTime,StartTime) AS `CallDuration`, LongDistance, CallType, CallerID, DialedNumber, Extension 
FROM shorewarecdrarchive.`call` 
WHERE Extension=6317 DATE(StartTime) = '2016-09-01' AND TIME(StartTime) >= '00:00:00' AND TIME(StartTime) <= '23:59:59' ORDER BY CallType,StartTime;

使用多个表对查询进行尝试:

代码语言:javascript
复制
SELECT
    call.CallType,
    call.DialedNumber,
    call.CallerID,
    call.Duration,
    connect.PartyTable,
    connect.ConnectReason,
    connect.PartyID,
    connect.PartyIDName,
    connect.PartyIDLastName,
    connect.Duration,
    connect.TalkTimeSeconds,
    agentactivity.StartTimeStamp,
    agentactivity.EndTimeStamp,
    agentactivity.AgentDN,
    agentactivity.AgentFirstName,
    agentactivity.AgentLastName,
    agentactivity.State,
    agentactivity.WorkgroupDN,
    agentactivity.WorkgroupName 
FROM 
    shorewarecdrarchive.`call` 
    INNER JOIN shorewarecdrarchive.`connect` 
        ON connect.CallTableID=call.ID 
    INNER JOIN shorewarecdrarchive.'agentactivity' 
        ON call.Extension=agentactivity.AgentDN 
WHERE 
    TIME(StartTime) >= '00:00:00' 
    AND TIME(StartTime) <= '23:59:59' BETWEEN '2016-09-01' AND '2016-09-16' 
ORDER BY 
    CallType,StartTime;

在这方面的任何和所有的帮助将受到极大的感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-01 22:41:43

感谢mcNet在这个问题上的帮助。下面的查询工作,并可用于挖掘所有数据,将在罐装个人&组报告。

代码语言:javascript
复制
SELECT 
    call.CallType,
    call.DialedNumber,
    call.CallerID,
    connect.PartyType,
    connect.ConnectReason,
    connect.PartyID,
    connect.PartyIDName,
    connect.PartyIDLastName,
    connect.TalkTimeSeconds,
    agentactivity.StartTimeStamp,
    agentactivity.EndTimeStamp,
    agentactivity.AgentDN,
    agentactivity.AgentFirstName,
    agentactivity.AgentLastName,
    agentactivity.State,
    agentactivity.WorkgroupDN,
    agentactivity.WorkgroupName
FROM
    shorewarecdrarchive.call
LEFT JOIN
    shorewarecdrarchive.connect ON connect.CallTableID = call.ID
LEFT JOIN
    shorewarecdrarchive.agentactivity ON call.Extension = agentactivity.AgentDN
WHERE
    StartTime >= '2016-09-01 00:00:00'
AND StartTime < '2016-09-17 00:00:00';

再次感谢你的帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40898519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档