2014-10-21 4 views
0

Привет, у меня есть эти таблицы в моей БД.Как присоединиться к этим двум таблицам?

REATE TABLE Titles (
    TitleID int NOT NULL , 
    ArtistID int NULL , 
    Title varchar (50) NULL , 
    StudioID int NULL , 
    UPC varchar (13) NULL , 
    Genre varchar (15) NULL 
); 

Insert Into Titles Values(1,1,'Meet the Neurotics',1,'2727366627','alternative'); 
Insert Into Titles Values(3,15,'Smell the Glove',2,'1283772282','metal'); 
Insert Into Titles Values(4,10,'Time Flies',3,'1882344222','alternative'); 
Insert Into Titles Values(5,1,'Neurotic Sequel',1,'2828830202','alternative'); 
Insert Into Titles Values(6,5,'Sonatas',2,'3999320021','classical'); 
Insert Into Titles Values(7,2,'Louis at the Keys',3,'3838227111','jazz'); 

CREATE TABLE Studios (
    StudioID int PRIMARY KEY , 
    StudioName varchar (40) NULL , 
    Address varchar (60) NULL , 
    City varchar (25) NULL , 
    Region varchar (15) NULL , 
    PostalCode varchar (10) NULL , 
    Country varchar (20) NULL , 
    WebAddress varchar (40) NULL , 
    Contact varchar (50) NULL , 
    EMail varchar (40) NULL , 
    Phone varchar (16) NULL , 
    SalesID smallint NULL 
); 

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

SELECT t1.Title, t2.Title, Studioname 
FROM Titles t1, Titles t2, studios 
WHERE t1.TitleID < t2.TitleID; 

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

ответ

0

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

И вы на правильном пути, используя <, чтобы убедиться, что каждая пара не появляется дважды в обратном порядке. И, конечно, тот же TitleID не должен присоединяться к самому себе - это должно быть другое название.

. . . 
FROM Titles t1 JOIN Titles t2 ON t1.StudioID = t2.StudioID 
    AND t1.TitleID < t2.TitleID 
. . . 

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

. . . 
JOIN Studios s ON t1.StudioID = s.StudioID