Сложность счетчика SQL - PullRequest
       3

Сложность счетчика SQL

2 голосов
/ 15 февраля 2012
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. Я хотел бы получить некоторые рекомендации, чтобы заставить эпизод работать должным образом. Где я пропустил?

Ответы [ 2 ]

1 голос
/ 15 февраля 2012

Попробуйте:

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 представляется ненужной с выбранными данными.

0 голосов
/ 15 февраля 2012

Ваш запрос возвращает серию, в которой firstprodyear равен самым ранним firstprodyear в вашей базе данных. Вы можете думать о выражении sub-select как о возвращении фиксированного числа, которое затем используется в запросе.

Например, если самая ранняя серия в вашей базе данных - «Дни нашей жизни» (firstprodyear = 1965), то вы получите количество эпизодов в тех сериалах, которые также начались в 1965 году.

Вы также можете быть более точными в том, какая таблица на самом деле содержит поле firstprodyear, хотя я предполагаю, что это series.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...