次の2つのテーブルがあります。
items:
id int primary key
bla text
events:
id_items int
num int
when timestamp without time zone
ble text
composite primary key: id_items, num
そして、各項目に最新のイベント (最新の「いつ」) を選択したいと考えています。リクエストを書きましたが、もっと効率的に書けるかどうかわかりません。
また、PostgreSQL では、Timestamp オブジェクトの比較に問題があります: 2010-05-08T10:00:00.123 == 2010-05-08T10:00:00.321 なので、「MAX(num)」で選択します。
それを改善する方法はありますか?ありがとう。
SELECT i.*, ea.* FROM items AS i JOIN
( SELECT t.s AS t_s, t.c AS t_c, max(e.num) AS o FROM events AS e JOIN
( SELECT DISTINCT id_item AS s, MAX(when) AS c FROM events GROUP BY s ORDER BY c ) AS t
ON t.s = e.id_item AND e.when = t.c GROUP BY t.s, t.c ) AS tt
ON tt.t_s = i.id JOIN events AS ea ON ea.id_item = tt.t_s AND ea.cas = tt.t_c AND ea.num = tt.o;
編集: 悪いデータがありました。申し訳ありませんが、より良い SQL クエリを見つけてくれてありがとう