2012-06-14 2 views
-4

Im пытаясь втиснуть на экзамен, и они являются одними из самых сложных примеров, приведенныхSQL жесткие запросы

Movie(title, year, director, budget, earnings) 
Actor(stagename, realname, birthyear) 
ActedIn(stagename, title, year, pay) 
CanWorkWith(stagename, director) 

Для каждого актера, который выступал в кино в 2006 году, находят свое сценическое имя и полную оплату во всех фильмы, в которых они действовали (т. Е. В том числе не в 2006 году).

Для каждого директора, который может работать как минимум с 5 актерами, найдите общее количество фильмов, которые директор сделал за каждый год, когда они сняли фильм.

+0

И, черт возьми, в чем ваш вопрос? –

+4

Вместо копирования вставьте вопрос, покажите свой подход. Сначала сначала изучите sql и попробуйте. – Luftwaffe

ответ

6

Вам необходимо разработать TDQD — запрос-запрос.

Для первого вопроса:

  • Как вы список актеров, которые работали в кино в 2006 году?
  • Учитывая такой список, как вы рассчитываете сумму вознаграждения каждого актера во всех фильмах, в которых они когда-либо работали?
  • Нахождение их сценического имени легко, так как это похоже на FK между соответствующими таблицами.

Вам нужно знать о подзапросах и о том, как встраивать подзапрос в предложение FROM. Вам также может понадобиться знать псевдонимы таблиц.

Что касается второго вопроса:

  • Как рассчитать, сколько актеров каждый режиссер может работать?
  • Как вы ограничиваете этот список директорами, которые могут работать с пятью или более участниками? (HAVING)
  • Учитывая список директоров (которые могут работать с более чем четырьмя актерами), как вы рассчитываете количество фильмов, которые снимал режиссер каждый год? (GROUP BY, COUNT)

Для любого сложного запроса создание этапа поэтапно - это путь, особенно если вы действительно можете проверить свои запросы по мере поступления.

+0

Спасибо, имейте это ввиду при попытке – George

Смежные вопросы