一部のデータを含む Packages というテーブルと、他の情報を含む関連テーブルがあります。次のように設定されています。
Name|Version|Architecture|Date|id
そして、Distribution という名前の 2 番目のテーブルには、次のようなものがあります。
repo|id
id は相互に参照します。特定のグループの最新 (日付順) を取得できるようにしたい。名前、アーキテクチャ、レポでグループ化したい。問題は、テーブルをまたがる必要があるため、通常のグループ内最大 n を正しく機能させることができないように見えることです。これは私がこれまでに持っているものです
select
p1.Name,
p1.Version,
p1.Arch,
d1.repo,
p1.Date
from Packages as p1
inner join Distribution as d1
on p1.id = d1.id
inner join (
select
Name,
Arch,
repo,
max(Date) as Date
from Packages
inner join Distribution
on Packages.id = Distribution.id
group by
Name,
Arch,
repo
) as sq
on p1.Name = sq.Name and p1.Arch = sq.Arch and d1.repo = sq.repo and p1.Date = sq.Date
問題は、リポジトリが正しくグループ化されていないように見えることです。それは私にユニークなレポを与えません。
編集:各レポの最新バージョンを取得したい。したがって、各レポで最大日付を取得してから、グループを作成する必要があります。
編集2:これを得るために、1つの答えを少し処理しました:
select p1.Name, p1.Version, p1.Arch, d1.repo, p1.Date
from Packages as p1 inner join
Distribution as d1
on p1.id = d1.id inner join (
select Name, Arch, repo, max(Date) as Date
from Packages inner join Distribution
on Packages.id = Distribution.id
group by Name, Arch, repo
) as sq
on p1.Name = sq.Name and p1.Arch = sq.Arch and d1.repo = sq.repo and p1.Date = sq.Date
そして、それは私のために働いているようです。