このトピックに関するいくつかの記事を読みました: MySQL で GROUP BY を 2 回使用し、これが必要なロジックと同じであることはわかっていますが、適用方法がわかりません。
スキーマがひどいことはわかっていますが(たとえば、エディションと公開されたテーブルが別になっている理由はまだわかりません….)、それを変更する権限はありません。
(作業中の機密情報がいくつかあるため、代わりに映画を使用した例を使用して問題をモデル化します。)
Tables:
Title
TitleID MovieTitle
1 Great Movie #1
2 Great Movie #2
Edition
StockNo editionID EditionText Media TitleID
1 1 Regular Edition DVD 1
2 1 Regular Edition Blue-ray 1
3 2 Extended Version DVD 1
4 2 Extended Version Blue-ray 1
5 1 Regular Edition DVD 2
6 1 Regular Edition Blue-ray 2
7 2 Extended Version DVD 2
8 2 Extended Version Blue-ray 2
Published
StockNo DatePublished
1 1999.01.01
2 2003.01.01
3 2000.01.01
4 1999.01.01
5 1997.01.01
6 1998.01.01
7 2012.01.01
8 2009.01.01
各行がいずれかのタイトルの版である行を返したいです。タイトルのエディションごとに、メディアに関係なく、最新の発行日を返したいと考えています。
例えば:
大作戦 #1、通常版、Latest_published_date
素晴らしい映画 #1、拡張版、Latest_published_date
大作戦 #2、通常版、Latest_published_date
素晴らしい映画 #2、拡張版、Latest_published_date
私はただ論理の海に迷い込んでいます…。
WITH Datespublished AS
( Select tt.titleid
,ed.editionID
,pb.datepublished
FROM title tt
left join edition ed on tt.titleid=ed.titleid
left join published pb on pb.stockno=ed.stockno
)
select titleid, editionID, max (datepublished) as maxdate from Datespublished group by titleid THEN editionID?!?!?!?