依靠工作历史记录

时间:2015-03-19 01:17:07

标签: mysql sql join

我有一张表request

http://960design.com/temp/request.png

和表requesthx

http://960design.com/temp/requesthx.png

单个请求可以由多个技术人员进行许多日志更新。例如,tech1可以为初始手机联系人创建日志,并在日志部分添加备注。然后tech2可以记录这些笔记并完成部分工作要求。 Tech 3也可以在同一份工作上等待预约。

如果登录tech3,我想显示tech3的每张开票的计数。

实现这一目标的最佳方法是什么? 我已经完成了几个丑陋的查询,这些查询在foreach循环中运行查询以添加到计数变量,但这似乎是达到简单计数总数的很长的方法。

我试过......

SELECT requesthx.hxID, requesthx.requestID,
    requesthx.datetime_gmt, requesthx.log, requesthx.techID, requesthx.status,
COUNT($requestTable.requestID) AS tickets, request.status, requesthx.techID
FROM requesthx
LEFT JOIN request 
  ON (requesthx.requestID = request.requestID)
    WHERE (requesthx.status <> 'closed'
    AND request.status = 'open'
    AND requesthx.techID = '1')
GROUP BY requesthx.techID;

...在一个查询中,有5张打开的票证,其中techID = 1.我只收到1作为计数。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

你是对的,数据库有办法统计这类信息。

Select count(*) as "TicketCount"
From requesthx
Where techid=3
And status = "open"
Group by techid

答案 1 :(得分:0)

我假设两个表中的状态字段都有自己的值

SELECT
    `requesthx`.`hxID`
    , `requesthx`.`requestID`
    , `requesthx`.`datetime_gmt`
    , `requesthx`.`log`
    , `requesthx`.`techID`
    , `requesthx`.`status`
    , COUNT(`request`.`requestID`) AS tickets
    , `request`.`status`
    , `requesthx`.`techID`
FROM
    `requesthx`
    LEFT JOIN `test`.`request` 
        ON (`requesthx`.`requestID` = `request`.`requestID`)
WHERE (`requesthx`.`status` ="logged"
    AND `request`.`status` ="open"
    AND `requesthx`.`techID` =3)
GROUP BY `requesthx`.`techID`;
相关问题