Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何创建包含用户接触或负责的所有票据的Trac报告?_Sql_Report_Trac - Fatal编程技术网

Sql 如何创建包含用户接触或负责的所有票据的Trac报告?

Sql 如何创建包含用户接触或负责的所有票据的Trac报告?,sql,report,trac,Sql,Report,Trac,有许多例子可以用来创建新的。据我所知,这仍然是一个棘手的问题,任何现有配方都没有涵盖: 。。。设计报告以显示用户所在位置的所有票据 所有者、报告者或他们尚未创建但已创建的票证 我给你留下了评论。这是最后一个棘手的部分 是否有任何建议,将效率视为额外的奖励?以下是我自己的第一个工作解决方案: “(当前)用户是所有者或报告者或(其中一个)评论作者” 我绝对不是SQL专家,所以可能有一个更有效的解决方案,但这个解决方案至少在显示已注释的记录单时有效,而且每个记录单不超过一次。您使用的是什么SQL风格?

有许多例子可以用来创建新的。据我所知,这仍然是一个棘手的问题,任何现有配方都没有涵盖:

。。。设计报告以显示用户所在位置的所有票据 所有者、报告者或他们尚未创建但已创建的票证 我给你留下了评论。这是最后一个棘手的部分


是否有任何建议,将效率视为额外的奖励?

以下是我自己的第一个工作解决方案:

“(当前)用户是所有者或报告者或(其中一个)评论作者”


我绝对不是SQL专家,所以可能有一个更有效的解决方案,但这个解决方案至少在显示已注释的记录单时有效,而且每个记录单不超过一次。

您使用的是什么SQL风格?SQLite?这里是SQLite,是的。但我试图遵循Trac的理念,即使用最可移植、最不特定于db后端的SQL语句。你认为这有什么特别的问题吗?在我的系统(基于MySQL)上进行测试时,我在最后的“orderby”子句中遇到了错误,所以我想我应该仔细检查一下以确定。我不得不将列名替换为别名(例如:
t.milestone
-->
\uuuu group\uuu
)以使其正常工作。我正在测试直接发送到DB的命令,而不是通过Trac reports UI,所以这可能是不同之处。一个潜在的问题是,此查询返回用户修改的所有票据,而不仅仅是他们留下注释的票据。例如,在我的系统中,该用户获取了一张票据,用户所做的只是将自己添加到“CC”列表中。要解决此问题,您需要从Trac的自动生成的注释文本中过滤掉用户注释,但我不知道是否可以单独使用SQL。Trac 1.0在票证视图上似乎有一个“仅注释”选项,用于过滤票证属性更改并仅显示真实注释。这项功能可能可以在这里使用,但我不知道这是否是只使用SQL就可以完成的(您可能需要将其包装在插件中)。
SELECT
  p.value AS __color__,
  t.milestone AS __group__,
  id AS ticket, t.type AS type,
  reporter, t.time as created,
  owner, changetime AS modified,
  author as commenter, tcg.time as date
FROM ticket t
LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority'
LEFT JOIN ticket_change tcg ON t.id = tcg.ticket
WHERE owner = $USER OR reporter = $USER
GROUP BY id

UNION

SELECT
  p.value AS __color__,
  t.milestone AS __group__,
  id AS ticket, t.type AS type,
  reporter, t.time as created,
  owner, changetime AS modified,
  author as commenter, tcg.time as date
FROM ticket t
LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority'
LEFT JOIN ticket_change tcg ON t.id = tcg.ticket
WHERE author = $USER
  AND id NOT IN (
  SELECT id
  FROM ticket
  WHERE owner = $USER OR reporter = $USER
)
GROUP BY id
ORDER BY t.milestone, p.value, t.type, t.time