2015-03-19 71 views
0

我有一个表request计数工作历史日志

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

和一张桌子requesthx

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

单个请求可以通过具有多个科技股多个日志更新。例如,tech1可以为最初的手机联系人创建日志,并在日志部分添加注释。然后tech2可以把这些笔记和完成一部分工作要求。 Tech 3也可以在等待预定的任务上工作。

如果Tech3车队已经登录,我想显示每一个开放的票Tech3车队的计数。

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

我试过......

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

你是正确的数据库具有计数这种信息的一种方式。

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

@William喜中,如果这或任何答案已经解决你的问题,请考虑[接受它(HTTP://meta.stackexchange .com/q/5234/179419)通过点击复选标记。这向更广泛的社区表明,您已经找到了解决方案,并为答复者和您自己提供了一些声誉。没有义务这样做。 – WorkSmarter 2015-03-19 01:41:00

+0

使用你的答案作为垫脚石,我相信我有它想通了: 'SELECT COUNT(DISTINCT $ requestHxTable.requestID)AS OpenTickets \t \t \t \t \t \t FROM $ requestTable \t \t \t \t \t \t \t INNER JOIN $ requestHxTable \t \t \t \t \t \t \t \t ON $ requestTable.requestID = $ requestHxTable.requestID \t \t \t \t \t \t其中$ requestTable.status = '开放' \t \t \t \t \t \t和$ requestHxTable.techID = $ techID“' – William 2015-03-19 14:07:10

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`;