2015-03-19 2 views
0

Вот мои отношения базы данных:SQL запросов - Выберите Query

показывает (showID, название, premiere_year, сеть, создатель, категория)

эпизод (showID, episodeID, Airdate, название)

  • showID является внешним ключом к выставкам

актер (actID, Fname, LNAME)

main_cast (showID, actID, роль)

  • showID является внешним ключом к выставкам actID является внешним ключом к актеру

recurring_cast (showID, episodeID, actID, роль)

  • showID является иностранным ключом для отображения эпизодаID является иностранным ключом к эпизод actID является иностранным ключом к актеру

клиент (CustID, Fname, LNAME, электронная почта, CreditCard, membersince, RENEWALDATE, пароль, имя пользователя)

cust_queue (CustID, showID, datequeued)

  • CustID является внешним ключом к showID клиента является иностранным ключ к шоу

наблюдал (CustID, showID, episodeID, datewatched)

  • CustID является внешним ключом к клиенту
  • showID является внешним ключом к выставкам
  • (showID, episodeID) является внешним ключом к эпизоду
  • (CustID, showID) является внешним ключом к cust_queue

всех «идентификаторов» является первичные ключи


У меня есть вопросы, которые я получил, а для некоторых я не знаю, как это сделать. Такие как:

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

Пытаюсь:

{ 
    SELECT Actor.fname, Actor.lname, Shows.Title 
    FROM Actor, Shows, Main_Cast, Recurring_Cast 
    WHERE Actor.actID = Main_Cast.actID AND Actor.actID = Recurring_Cast.actID; 
} 

Но я не думаю, что это правильно. Есть идеи??

+0

Какая СУБД вы используете? Postgres? Oracle? –

+0

Я использую cPanel –

+0

cPanel не является СУБД. Это похоже на клиентский инструмент SQL. К какому движку базы данных вы подключаетесь к нему –

ответ

1

Попробуйте следующее:

SELECT Actor.fname, Actor.lname, Shows.Title 
FROM Actor, Shows AS sh 
WHERE Actor.actID 
IN 
     (SELECT actID FROM Main_Cast 
     WHERE sh.showID==Main_Cast.showID) 
UNION 
     (SELECT actID FROM Recurring_Cast 
     WHERE sh.showID==Recurring_Cast.showID) 

Это покажет вам актер, которые в основном составе и повторяющихся актерах то же шоу. Вы можете отредактировать его немного, чтобы получить то, что вы хотите.

+0

MySQL сказал: Документация # 1054 - Неизвестный столбец 'Shows.showid' в 'where clause' –

+1

Извините, мой плохой. Я отредактировал свой ответ. (долгое время не см., sql!: D) Надеюсь, что это сработает на этот раз. – yiabiten

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