ОРАКУЛ 10g Не отображаются данные - PullRequest
0 голосов
/ 26 февраля 2012

У меня следующий запрос, и он не отображает никаких записей, пока они существуют.

SELECT movieID, actorID, title, lastName, firstName, gender 
FROM Actor, Movie
WHERE title ='Midnight Cowboy';

обратите внимание, что это не то же самое, что мой предыдущий вопрос, так как это было для просмотра данных из двух полей, это не работает, так как не отображает никаких данных.

Я запустил этотquery:

SELECT movieID, actorID, title, lastName, firstName, gender 
FROM Actor, Movie
WHERE lastName ='Hoffman';

Показывает фильм «Полуночные ковбои», а также все другие фильмы, связанные с ним, в этом фильме есть два актера, и это то, что я хочу. Второй запрос показывает второго актера:

SELECT movieID, actorID, title, lastName, firstName, gender 
FROM Actor, Movie
WHERE lastName ='Voight';

Здесь показаны все фильмы, в которых он снимается, плюс Midnight Cowboys

Вот почему я пытался показать актеров только для фильма Midnight Cowboys

Вот информация из файла спулаи я попробовал Midnight Cowboys также с запросом, который не показывает данные:

MIT TITLE YEAR


ОБЩИЕ НАПРАВЛЕНИЯ КОМПАНИИ


СКИДКА DVDPRICE


025 Полуночные ковбои 1969
Метро-Голдвин-Майер 5 2
17.99 11.99

1 Ответ

1 голос
/ 26 февраля 2012

Попробуйте этот запрос и посмотрите, возвращает ли он что-нибудь:

SELECT movieID, actorID, title, lastName, firstName, gender 
FROM Actor, Movie
WHERE UPPER(title) LIKE '%MIDNIGHT%COWBOY%';

Предполагая, что это так, сравните название фильма ИМЕННО с тем, что вы использовали в своем примере (т.е. Midnight Cowboy) и посмотрите, где ваше сравнение было неверным.

Надеюсь, это поможет ...

РЕДАКТИРОВАТЬ:

ОК, увидев ваши комментарии к этому ответу и ОП.

Этот запрос SHOULD возвращает нужные вам данные:

SELECT Actor.firstName,
       Actor.middleName,
       Actor.lastName,
       Movie.title
  FROM Actor
 INNER JOIN Role ON (Actor.actorID = Role.actorID)
 INNER JOIN Movie ON (Role.movieID = Movie.movieID)
 WHERE (Movie.title = 'Midnight Cowboys'
       OR UPPER(Movie.title) LIKE '%MIDNIGHT%COWBOY%');

Если он ничего не возвращает, я бы предложил, чтобы у вас возникла проблема с данными.Попробуйте этот запрос, чтобы убедиться, что у вас есть хотя бы одна запись, связывающая фильмы с актерами через их роли (кстати, вам не следует называть таблицу «Роль», поскольку это зарезервированное слово Oracle).Если он не возвращает ни одной строки, значит, у вас отсутствуют данные о связывании, и у вас возникли проблемы, а не только вопрос, который вы опубликовали.

SELECT *
  FROM Role
 WHERE movieID = '025';

Обратите внимание, что столбец movieID является столбцом VARCHAR2 из-заmovieID явно отображается как 025 в результатах, которые вы разместили в исходном вопросе, если бы оно было числовым, оно было бы 25.

...