我有一张表request
:
和表requesthx
:
单个请求可以由多个技术人员进行许多日志更新。例如,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作为计数。有什么想法吗?
答案 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`;