Выбор отдельного значения из базы данных с последующим подсчетом каждого значения, соответствующего результату - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть база данных театров и фильмов.У каждого Театра есть идентификатор театра, а у каждого Кино есть идентификатор театра, который соответствует его театру.Я хочу выбрать список различных жанров из базы данных в следующем театре и сосчитать фильмы в этом жанре.

В основном отформатирован так

Genre    | Count
----------------
Action   |    10
Comedy   |     5
Thriller |     7

Пока я пробовал этот код:

SELECT DISTINCT GENRE, (
    select count(distinct movie) from movies where genre = GENRE
) genre_count
from movies where theaterID = 7 SORT BY GENRE ASC;

, и он получает список всех жанров в этом театрено для столбца count он возвращает счетчик всех фильмов в этом театре вместо фильмов, которые соответствуют этому жанру.Есть ли способ сопоставить эти значения во внутреннем запросе, или я также слышал, что JOIN может работать, но я не уверен, как в той же таблице.

Ответы [ 2 ]

3 голосов
/ 03 апреля 2019

Вы, вероятно, должны использовать GROUP BY.Это не проверено, но вы можете попробовать что-то вроде:

SELECT Genre, COUNT(*) as CNT from movies WHERE theaterID = 7 GROUP BY genre ORDER BY CNT

1 голос
/ 03 апреля 2019

Я буду использовать ваш код и просто укажу, почему он не дает желаемого результата:вы должны создать псевдоним таблицы movies, чтобы вы могли использовать ее GENRE в подзапросе:

SELECT DISTINCT m.GENRE, (
    select count(distinct movie) from movies where genre = m.GENRE
) genre_count
from movies m 
where m.theaterID = 7 SORT BY m.GENRE ASC;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...