Count (*) атрибут из подзапроса - PullRequest
0 голосов
/ 30 января 2019

Вопрос: Как бы вы отобразили одно поле из внешнего запроса, а другое - из внутреннего подзапроса?

Моя проблема: Мне нужно отобразить именаактеры И сколько фильмов каждый снял (даже если их не было) без каких-либо левых или правых соединений.

Star(starnumb, starname)
MovStar(starnumb, mvnumb)

Ранее я отображал информацию с помощью объединения;

SELECT starname, COUNT(movstar.starnumb) AS numMovies

Проблема, с которой я столкнулся, заключается в информации о количестве фильмов, в которых звезда сыграла в отношении Movstar, а имя звезды - в отношении Star.

SELECT starname, COUNT(*) AS numMovies
FROM star s
Where starnumb NOT IN
    (SELECT movstar.starnumb
    FROM movstar)
OR starnumb IN
(SELECT movstar.starnumb
    FROM movstar)
GROUP BY starname
ORDER BY numMovies DESC; 

Код выполняется, ноЯ не могу получить нужную информацию для отображения в поле Count;

SELECT starname, COUNT(*) AS numMovies

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Вы можете сопоставить подзапрос, например, сравнив один из его столбцов с одним из столбцов внешнего запроса.И count() выдаст 0, если не найдено подходящих записей.

SELECT s.starname,
       (SELECT count(*)
               FROM movstat ms
               WHERE ms.starnumb = s.startnumb) nummovies
       FROM star s;
0 голосов
/ 30 января 2019

Почему вы не хотите использовать соединение?

SELECT s.starname, count(*) AS numMovies FROM star s LEFT JOIN movstar m ON m.starnumb = s.starnumb GROUP BY startname ORDER BY numMovies DESC

должно получить то, о чем вы просите, если я правильно понял.

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