在查询trac报告时检测未设置的$ VARIABLE

时间:2011-05-19 20:23:45

标签: sql sqlite trac

我已经完成了一个类似这样的trac报告:

SELECT status, 
   id AS ticket, summary, priority, keywords,  
   datetime(changetime/1000000, 'unixepoch') AS last_updated, 
   milestone AS __group__,
   reporter, owner
  FROM ticket t
  WHERE status NOT IN ('closed', 'resolved') AND milestone in ('$MILESTONE')
  ORDER by t.milestone ASC, p.value

但是,如果用户未指定$MILESTONE的值,我想显示我们三个团队中每个团队的结果,按团队分组:

SELECT status, 
   id AS ticket, summary, priority, keywords,  
   datetime(changetime/1000000, 'unixepoch') AS last_updated, 
   milestone AS __group__,
   reporter, owner
  FROM ticket t
  WHERE status NOT IN ('closed', 'resolved') AND milestone in ('project1', 'project2', 'project3')
  ORDER by t.milestone ASC, p.value

如何检测sql查询中是否设置了变量?除此之外,是否有一种简单的方法可以在用户首次点击报告时设置$TEAM的默认值?

(注意:如果这种方式在sql实现中是一般的,请将其标记为“sql”或发布评论,以便我可以这样做。)

1 个答案:

答案 0 :(得分:1)

您应该能够在WHERE子句中使用CASE WHEN ELSE语句,如下所示:

SELECT status, 
id AS ticket, summary, priority, keywords,  
datetime(changetime/1000000, 'unixepoch') AS last_updated, 
milestone AS __group__,
reporter, owner
FROM ticket t
WHERE status NOT IN ('closed', 'resolved') 
AND (CASE WHEN '$MILESTONE' != '' THEN (milestone='$MILESTONE') 
     ELSE (milestone in ('project1', 'project2', 'project3')) END)
ORDER by t.milestone ASC, p.value