2011-05-19 68 views
0

我kludged一個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

您應該能夠在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 
+0

啊,完美!這比我擔心的要簡單得多。我曾嘗試使用存在(...),但顯然這是不存在於sqlite中。 – Arkaaito 2011-05-20 00:12:23