2010-09-11 2 views
1

Вот вопрос, заданный профессором: найдите минимальную и максимальную длину фильмов, играющих в каждом городе.Нужна помощь с некоторыми запросами Oracle SQL

А вот как у меня есть мои таблицы структурированы:

CREATE TABLE Theatres (
Name varchar2(50) not null, 
City varchar2(50) not null, 
State varchar2(50) not null, 
Zip number not null, 
Phone varchar2(50) not null, 
PRIMARY KEY (Name) 
); 

CREATE TABLE Movies (
Title varchar2(100) not null, 
Rating NUMBER not null, 
Length NUMBER not null, 
ReleaseDate date not null, 
PRIMARY KEY (Title), 
CHECK (Rating BETWEEN 0 AND 10), 
CHECK (Length > 0), 
CHECK (ReleaseDate > to_date('1/January/1900', 'DD/MONTH/YYYY')) 
); 

CREATE TABLE ShownAt (
TheatreName varchar2(50) not null, 
MovieTitle varchar2(100) not null, 
PRIMARY KEY (TheatreName, MovieTitle), 
FOREIGN KEY (TheatreName) REFERENCES Theatres(Name), 
FOREIGN KEY (MovieTitle) REFERENCES Movies(Title) 
); 

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

SELECT MIN(Movies.Length), MAX(Movies.Length), Theatres.Name 
FROM Theatres, Movies, ShownAt 
WHERE ShownAt.TheatreName = Theatres.Name AND 
ShownAt.MovieTitle = Movies.Title AND 
Theatres.City IN (SELECT UNIQUE City FROM Theatres); 

Никто не видит ничего плохого? Спасибо за помощь!

+0

Вы можете объяснить, что означает, что ваш запрос, но вам нужно будет либо ORDER BY ASC или ORDER BY DESC или MIN() , MAX() в ваших запросах. –

ответ

2

Вы были довольно близки, я думаю. Просто не хватает GROUP BY

SELECT 
    MIN(Movies.Length) AS Shortest, 
    MAX(Movies.Length) AS Longest, 
    Theatres.City 
FROM Theatres 
JOIN ShownAt ON ShownAt.TheatreName = Theatres.Name 
JOIN Movies ON ShownAt.MovieTitle = Movies.Title 
GROUP BY Theatres.City 
1

Я считаю, что это будет делать трюк:

SELECT T.City, MIN(M.Length) AS MinLength, MAX(M.Length) AS MaxLength 
    FROM Movies AS M 
    JOIN ShownAt AS S ON S.MovieTitle = M.Title 
    JOIN Theatres AS T ON S.TheatreName = T.Name 
GROUP BY T.City 
Смежные вопросы