0

アクティブチケットレポートに表示される各チケットの返信数を追加したいと思います。

これが私の現在のクエリです:

SELECT p.value AS __color__,
   id AS ticket, summary, component, version, milestone, t.type AS type, 
   reporter, owner, status,
   time AS created,
   changetime AS _changetime, description AS _description,
   date(changetime / 1000000, 'unixepoch') as LastUpdate,
   reporter AS _reporter
  FROM ticket t
  LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority'
  WHERE status <> 'closed'
  ORDER BY CAST(p.value AS integer), milestone, t.type, time

返信/コメント数を追加することはできますか?

4

1 に答える 1

1

サブクエリを使用すると、次のようになります。

SELECT p.value AS __color__,
    id AS ticket, summary, component, version, milestone, t.type AS type, 
    reporter, owner, status,
    time AS created,
    changetime AS _changetime, description AS _description,
    date(changetime / 1000000, 'unixepoch') as LastUpdate,
    reporter AS _reporter,
    CASE WHEN c.count ISNULL OR c.count = '' THEN 0 ELSE c.count
    END AS comments
FROM ticket t
LEFT JOIN (
    SELECT ticket, count(newvalue) AS count
    FROM ticket_change
    WHERE field = 'comment' AND NOT newvalue = ''
    GROUP by ticket) AS c
    ON t.id = c.ticket
LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority'
WHERE status <> 'closed'
ORDER BY CAST(p.value AS integer), milestone, t.type, time

すべての列名にテーブル名を含める必要はありませんが、特にdbスキーマについてあまり知らない場合は、その起源を知っていても問題はありません。

CASE式は、コメントなしのチケットの「コメント」列に入力するために使用されます。そうしないと、これらのセルは空になります。

AND NOT newvalue =''は、変更所有者の再割り当てのような実際のコメントのない変更を除外します。

チケットIDでも注文したいのですが、オープンチケットの数によって異なります。

于 2013-03-08T20:37:27.913 に答える