我阅读了有关该主题的一些文章,包括:在MySQL中两次使用GROUP BY,并且知道这应该与我需要的逻辑相同,但是我只是不知道如何应用它。
请注意,我知道架构很糟糕(例如,我仍然不明白为什么版本表和发布表是分开的……。)但是我无权更改它。
(我有一些正在使用的敏感信息,所以我将使用一个使用电影的示例来模拟我的问题。)
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,普通版,最新发布日期
大电影#1,扩展版本,最新发布日期
重大举措#2,常规版本,Latest_published_date
精彩电影#2,扩展版本,最新发布日期
我只是失去了逻辑的海...
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?!?!?!?
您可以使用逗号将多个列分组。改变:
group by titleid THEN editionID
到:
group by titleid, editionID
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句