Объединение и сопоставление таблиц в SQL с запросом - PullRequest
0 голосов
/ 03 февраля 2019

Так что я пытаюсь выбрать несколько таблиц и сделать сравнение между starNumb, mvNumb из таблицы Star и таблицы Movie, если эти две пары совпадают, я хочу, чтобы он возвращал / отображал starName вместе с общим количеством подсчетов StarName.связан с mvNumb, если это имеет смысл.

Пока у меня есть это, и он не играет в мяч, я уверен, что это что-то очень простое, но изо всех сил.

SELECT STARNUMB.STAR, MVNUMB.MOVIE
FROM MOVIES JOIN STAR
where STARNUMB = MVNUMB;

То, что я хочу из этого, выглядит как вывод ниже:

Column1 StarName = TestName1

Column2 MovNumb = 1

Это означает, что звезда появилась в фильме 1 раз.

Таблицы и FD выглядят примерно так:

Жирный шрифт = Первичные ключи

  • Звезда ( starNumb , starName, brthPlce, starBorn, starDied)
  • MovStar (mvNumb *, starNumb *).<----- внешние ключи </li>
  • Фильм ( mvNumb , mvTitle, yrMde, mvType, крит, mpaa, noms, awrd, dirNumb *)
  • Borrow ( txNumb , mvNumb *, borDte, mmbNumb *)
  • Member ( mmbNumb , mmbName, mmbAddr, mmbCty, mmbSt, numRent, бонус, joinDate)
  • Директор ( dirNumb , dirName, dirBorn, dirDied) **

1 Ответ

0 голосов
/ 03 февраля 2019

Существует соотношение n-to-m между звездами и фильмами, что приводит к созданию таблицы мостов MovStar, вам нужно добавить это в объединение.Но если вы хотите рассчитывать только количество фильмов на одну звезду, вам нужно присоединиться только к Movies и MovStar:

SELECT m.starName, count(*)
FROM MOVIES m JOIN MovStar ms
  on m.STARNUMB = ms.starNumb
group by m.starName
order by 2 desc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...