2014-07-05 88 views
0

的值如果我有兩個表是這樣的:獲取的外鍵引用

CREATE TABLE Director 
(
    `DirectorNr` INTEGER NOT NULL, 
    `First Name` VARCHAR (20), 
    `Last Name` VARCHAR (30), 
    `Age` INTEGER, 
    `Movies` INTEGER, 
    PRIMARY KEY(DirectorNr) 
); 

CREATE TABLE Movies 
(
    `MovieNr` INTEGER NOT NULL, 
    `Title` VARCHAR (100), 
    `Genre` VARCHAR (30), 
    `USK` INTEGER, 
    `Director` INTEGER NOT NULL, 
    `Length` INTEGER, 
    `Release` DATE, 
    PRIMARY KEY (MovieNr), 
    FOREIGN KEY (Director) 
      REFERENCES Director (DirectorNr) 
); 

INSERT INTO Director 
VALUES (1, 'Peter', 'Jackson', 52, 17); 

INSERT INTO Movies 
VALUES (1, 'The Hobbit: An Unexpected Journey', 'Fantasy', 12, 1, 169, '2012/12/12'); 

如何我可以通過外鍵得到了導演的名字,用SELECT?

事情是這樣的:

SELECT `Director.First Name` `Director.Last Name` FROM Movies ... 

回答

1

加入director表,並指定在on條件的關係

SELECT m.title, d.`First Name`, d.`Last Name` 
FROM Movies m 
JOIN Director d ON m.Director = d.DirectorNr 

要注意:用的是設計,你只能有一部電影一個導演。

並脫離表或列名稱使用反引號只圍繞着元素的名稱和表和列

錯誤

`director.first name` 

正確

director.`first name` 
-1

選擇米未組合.Title,d.FirstName from Movies m,Director d where m.Director = d.DirectorNr

+0

請不要暗示遺留隱式連接語法。 –

1
SELECT d.`First Name`, d.`Last Name` FROM Director d 
WHERE DirectorNr IN (SELECT Director FROM Movies WHERE Director=value); 
+0

如果我將'value'替換爲'1',將會出現錯誤'#1242 - 子查詢返回多於1行'。 – Tuksn

+0

哦對不起,導演可能有更多的電影,用 –

+0

替換=號,謝謝這對我只有導演名字也有用。 – Tuksn