SQL反击困难

时间:2012-02-15 15:08:53

标签: sql postgresql

select maintitle, 
       firstprodyear, 
       COUNT(DISTINCT episode.episodeid) as TOTALEPISODES
from series
LEFT OUTER JOIN episode ON series.seriesid = episode.seriesid     
LEFT OUTER JOIN filmitem ON filmitem.filmid = episode.episodeid 
where firstprodyear =(select MIN(firstprodyear) from series)
group by maintitle, firstprodyear;

查询的2/3有效。我确实得到了系列和最早年份的称号。但似乎情节计数器没有正常工作。对于某些情节,我会得到15,34和某个地方0。 我会提前做一些指导,让episodecounter正常工作。我在哪里错过了?

2 个答案:

答案 0 :(得分:1)

尝试:

select maintitle, 
       min(firstprodyear) firstprodyear, 
       COUNT(DISTINCT episode.episodeid) as TOTALEPISODES
from series
LEFT OUTER JOIN episode ON series.seriesid = episode.seriesid     
/*LEFT OUTER JOIN filmitem ON filmitem.filmid = episode.episodeid */
group by maintitle;

注意:所选数据似乎不需要指向filmitem的链接。

答案 1 :(得分:0)

您的查询返回的数据系列firstprodyear等于数据库中最早的firstprodyear。您可以将子选择语句视为返回固定数字,然后在查询中使用该数字。

例如,如果数据库中最早的系列是“我们的生命日”(firstprodyear = 1965),那么您将获得同样在1965年开始的系列中的剧集数量。

您可能还希望更明确地了解哪个表实际包含firstprodyear字段,但我假设它是series