0

このトピックに関するいくつかの記事を読みました: 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?!?!?!?
4

2 に答える 2

1

複数の列をカンマで区切ってグループ化できます。変化する:

group by titleid THEN editionID

に:

group by titleid, editionID
于 2013-08-05T14:11:12.060 に答える