1

作成時間に基づいて最大優先度の値を取得する必要があります。私のクエリはここにあります、

select
  t.id, ocf1.Content Priority, ocf1.created
from
  Tickets t inner Join ObjectCustomFieldValues ocf1
  on ocf1.ObjectId=t.id
where
  ocf1.CustomField=301
  and t.queue in (27,50,49,52)
  and t.status not in ('rejected','deleted')
  and t.created between subdate(now(),interval 1500 minute) and now();

id     Priority  created
-------------------------------
27344  P4        28/01/13 09:17
27344  Incident  28/01/13 09:18
27345  P4        28/01/13 09:22
27346  P4        28/01/13 09:25
27353  P4        28/01/13 10:08
27353  Incident  28/01/13 10:09
27360  P4        28/01/13 10:38
27360  Incident  28/01/13 10:39
27365  P3        28/01/13 11:52
27376  P4        28/01/13 14:49

Incident例: ここでは、 idの最大優先度の値が必要27344です。他のIDも同様です。

4

1 に答える 1

3
SELECT  a.*, b.*      -- select your desired columns here
FROM    Tickets a
        INNER JOIN ObjectCustomFieldValues b
            ON b.ObjectId = a.id
        INNER JOIN
        (
            SELECT  ObjectId, MAX(created) max_val
            FROM    ObjectCustomFieldValues
            WHERE   CustomField = 301
            GROUP   BY ObjectId
        ) c ON  b.ObjectId = c.ObjectId AND
                b.created = c.max_val
WHERE   b.CustomField = 301 AND
        a.queue IN (27,50,49,52) AND
        a.status NOT IN ('rejected','deleted') AND 
        a.created BETWEEN SUBDATE(NOW(), INTERVAL 1500 MINUTE) AND NOW()

あなたの日付は本当に次のようにフォーマットされています28/01/13 09:17か?データ型は文字列です。右?その場合は、日付時刻に変換する必要があるため、MAX()適切に機能します。

于 2013-01-29T09:46:22.117 に答える