- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个从各种来源获取数据并生成报告的应用程序。目前我正在更改它以根据历史上给定日期的数据生成报告,以前它只显示今天事物状态的数据。
我的数据源之一是 Bugzilla,所以我需要获取历史上给定日期的 Bugzilla 数据。我有一个到 Bugzilla 数据库的只读连接,但没有简单的方法可以对服务器执行任何其他操作(例如安装插件或将程序放入数据库中)。报告服务器和 Bugzilla 服务器之间的连接也很慢,所以我想在服务器上进行计算,而不是在报告服务器上获取数据和解决问题。
实际上,我的工作速度几乎可以接受,但我不确定我是否以最好的方式或“正确”的方式工作,我担心速度可能会随着我们添加更多问题而不再可接受数据库。
所以,我的解决方案如下——你会怎么做。
对于一些背景知识,Bugzilla 将所有错误的当前状态存储在一个表中(称为“bugs”)和一个表(“bugs_activity”)中每个字段的更改历史记录,如下所示:
fieldid INTEGER, -- References the fielddefs table
bug_when TIMESTAMP, -- Time the change happend
added TEXT, -- New text for the field
removed TEXT, -- Old text for the field
SELECT bug_status, bug_id, op_sys, resolution, rep_platform
FROM (SELECT bug_id,
IFNULL((SELECT removed FROM bugs_activity a, fielddefs f
WHERE a.fieldid = f.id
AND bug_id = b.bug_id AND f.name = 'bug_status'
AND bug_when >= '2012-01-01 00:00:00'
ORDER BY bug_when DESC LIMIT 1), bug_status) AS bug_status,
-- Repeat IFNULL clause for op_sys, resolution and rep_platform
FROM bugs b
WHERE b.creation_ts <= '2012-01-01 00:00:00' ) bug_subselect
-- Some other filters to reduce the bugs (specific product, ect)
)
-- More filters based on the new values that have been derived
;
SELECT bug_status, bug_id, op_sys, resolution, rep_platform
FROM (SELECT bug_id,
IFNULL((SELECT removed FROM bugs_activity a, fielddefs f
WHERE a.fieldid = f.id AND bug_id = b.bug_id AND f.name = 'bug_status'
AND bug_when = (
SELECT MIN(bug_when) FROM bugs_activity a, fielddefs f
WHERE a.fieldid = f.id
AND bug_id = b.bug_id
AND f.name = 'bug_status'
AND bug_when >= '2012-01-01 00:00:00'
LIMIT 1
)
LIMIT 1), bug_status) AS bug_status,
-- Repeat IFNULL clause for op_sys, resolution and rep_platform
FROM bugs b
WHERE b.creation_ts <= '2012-01-01 00:00:00' ) bug_subselect
-- Some other filters to reduce the bugs (specific product, ect)
)
-- More filters based on the new values that have been derived
;
最佳答案
如果我正确理解你,你可以试试这个..
SET @tdate = '2012-01-01 00:00:00';
SELECT
b.bug_id
,CASE
WHEN s.removed IS NULL THEN b.bug_status
ELSE s.removed
END AS statusAtDate
,CASE
WHEN o.removed IS NULL THEN b.op_sys
ELSE o.removed
END AS apSysAtDate
FROM
bugs AS b
LEFT OUTER JOIN (
SELECT
a.bug_id
,a.bug_when
,a.removed
,a.bug_when
,@row_num := IF(@last=a.bug_id,@row_num+1,1) AS rnk
,@last:=a.bug_id
FROM
bug_activity AS a
INNER JOIN fielddefs AS f
ON a.fieldid = f.id
AND f.name = 'bug_status'
WHERE
a.bug_when <= @tdate
ORDER BY
a.bug_id
,a.bug_when
) AS s
ON b.bug_id = s.bug_id
AND s.rnk=1
LEFT OUTER JOIN (
SELECT
a.bug_id
,a.bug_when
,a.removed
,a.bug_when
,@row_num := IF(@last=a.bug_id,@row_num+1,1) AS rnk
,@last:=a.bug_id
FROM
bug_activity AS a
INNER JOIN fielddefs AS f
ON a.fieldid = f.id
AND f.name = 'op_sys'
WHERE
a.bug_when <= @tdate
ORDER BY
a.bug_id
,a.bug_when
) AS o
ON b.bug_id = o.bug_id
AND o.rnk=1
--repeat for resolution and rep_platform
SELECT
bug_id
,bug_status
,op_sys
,max(old_status)
,max(old_opSys)
(
SELECT
*
FROM
bugs AS b
LEFT OUTER JOIN (
SELECT
a.bug_id
,a.bug_when
,if(f.name = 'bug_status',a.removed,NULL) AS old_status
,if(f.name = 'op_sys',a.removed,NULL) AS old_opSys
,a.bug_when
,@row_num := IF(@last=a.bug_id AND@lastField=f.name ,@row_num+1,1) AS rnk
,@last:=a.bug_id
,@lastField:=f.name
FROM
bug_activity AS a
INNER JOIN fielddefs AS f
ON a.fieldid = f.id
WHERE
a.bug_when <= '2012-01-01 00:00:00'
AND f.name in( 'bug_status','op_sys')
ORDER BY
a.bug_id
,f.name
,a.bug_when
) AS s
ON b.bug_id = s.bug_id
AND s.rnk=1
) AS T
GROUP BY
bug_id
,bug_status
,op_sys
<%= row->old_status ?: row->bug_status %>
关于sql - BugZilla,在给定日期获取错误状态(等)的最佳(最快)方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17905395/
我想添加一个新状态我去了管理->字段值->状态 然后我添加了一个新的“WAITING-REPONSE”排序键 50 但是当我回到一个现有的错误时,状态不存在? 我还有什么需要做的吗? 谢谢 最佳答案
我正在使用 Bugzilla 5.0.2。它不发送电子邮件,所以我更改了一些参数,现在我想测试它。我将 mail_delivery_method 设置为 Test,现在我应该怎么做才能提示 Bugzi
在 Bugzilla 中报告错误时,您会看到硬件平台和操作系统的下拉选项。硬件选项为 {All, PC, Mac, Other},操作系统选项为 {Win, Mac, Linux, Other}。我想
在我工作的地方,我们广泛使用 Bugzilla 进行错误和功能跟踪。我们利用内置的里程碑来帮助我们更好地管理我们的时间表,但有时优先级会发生变化,里程碑需要重新安排。在此期间,我们使用“一次更改多个错
我不想更改状态字段的工作方式我只想将标签更改为 旧系统使用的状态。 (旧系统由电子表格和纸张组成:P 我们正在使用 3.0 * 未确认 --> 初步 * 新 --> 设计审查 * 分配 --> STR
我们有两种产品,A 和 B,本来应该是一种产品。 每个产品都有许多组件。 我希望能够移动 B 的组件,以便它们属于 A。 有谁知道如何做到这一点? 最佳答案 一个不太容易的方法是 在产品 A 下创建相
就像"separate clients question"中的人一样我正在尝试在 bugzilla 实例中定义“客户端”组。区别在于特定产品的可见性。我们希望: 让每组客户只能看到自己的项目,而看不到
我想向表格报告添加更多列。我正在使用 bugzilla 版本 4.2.5。您能帮我修改一下我需要修改的文件吗? 谢谢,拉姆亚 最佳答案 如果列列表中没有所需字段(“更改列”),我们必须通过编辑以下文件
对于新的 Bugzilla 安装,我们希望我们的错误编号从 1 以外的其他数字开始。有办法做到这一点吗? 最佳答案 根据响应,以下 MySQL 命令将执行此操作: ALTER TABLE bugs A
我们的 bigzilla 安装有几 GB 的数据,并且没有服务器管理员。 我拥有对 bugzilla 的 Web 管理访问权限,并希望获取所有附件(带有原始名称和 bug #)。 我知道有大量的数据库
我的 Bugzilla 遇到了一个奇怪的问题。我使用我的 IP 作为 Bugzilla urlbase 设置。这样我就可以通过以下样式地址登录我的 Bugzilla: http://192.168.1
我们正在使用 bugzilla,我想在 ListView 中添加一列,以查看 bug 状态设置为已解决或已关闭时的最后一个时间戳。这可能吗?如果可能的话,如何实现?如果没有,我能得到的最接近的是什么?
我在 postgreSQL DB 上安装 bugzilla 时遇到了一些麻烦。在centOS服务器上。 运行 checksetup.pl 文件时,输出以: Reading ./localconfig.
我对 MyLyn 很感兴趣。我正在使用 Eclipse Ganymede,并且我可以访问我正在处理的项目的 BugZilla 安装。 我想知道是否必须以任何方式更改/配置 BugZilla 安装,或者
我已经在我的 windows7 机器上安装了 bugzilla4.2.5。当我运行 bugzilla 的 checksetup.pl 脚本时,它显示 Use of uninitialized valu
我正在运行 Bugzilla 4.2.5。我想保存搜索以查看我昨天所做的工作 - 所以我随时记录的任何内容,或更新了评论。 我希望我可以使用输出来帮助解决我的日常 Scrum 问题“你昨天做了什么?”
真的有好 免费 BugZilla 报告工具?我发现 Web 界面上的默认搜索选项太有限了。我最大的问题是缺少 Order By 选项(一次只有 1 个字段,可供选择的字段集非常有限)。我已经做了一些谷
我试图从buglist.cgi文件中获取xml数据,但没有成功。在以xml格式显示所需的错误后, buglist.cgi?xyz_param=xyz_value&ctype=csv 给我一个值的CSV
我是 Bugzilla 的新手,尤其是在配置方面。我正在寻找一种方法,将产品名称包含在发送给用户的电子邮件中以查找错误。我希望它看起来像这样: Product [Bug ##] description
我刚刚安装了 BugZilla,但是没有提示我设置和管理员帐户。数据库表明有一个用电子邮件 admin@mydomain.com 创建的用户所以我正在尝试重置密码。当我尝试重置密码时,出现以下错误:
我是一名优秀的程序员,十分优秀!