2011-09-15 33 views
3

好了,我有3個表: 電影(Movienum,標題,Yearreleased) Actsin(MovienumStarID) 星(StarID,給定名稱,Familyname)SQL。列MAX

  • 粗體主鍵,國外斜體

現在我必須找到埃迪墨菲出演的最新電影,這裏是我的嘗試:

SELECT M.Title, M.Yearreleased 
FROM Movies M 
WHERE M.Yearreleased = (
    SELECT MAX(M.Yearreleased) 
    FROM Stars S, ActsIn A, Movies M 
    WHERE S.Givenname = 'Eddie' AND S.Familyname = 'Murphy' 
    AND S.StarID = A.StarID 
    AND A.MovieNum = M.MovieNum); 

這將返回所有電影從同一年的最後埃迪墨菲電影。

任何幫助將是驚人的:d

+3

實際上,如果墨菲在幾部電影今年出演,你不能得到確切最後一部電影,但所有與墨菲的電影去年發佈。你必須存儲發佈日期。 – pupssman

+0

這功課嗎?聽起來與Oracle的問題非常相似... – Bruce

+0

它適用於Uni。在DB中唯一的墨菲電影是從3個單獨的年份。 – Steve

回答

1

您可以

ORDER BY Yearrealesed DESC 

如果你想只是一個再LIMIT 1

Link to ORDER BY

編輯:我看到你不能使用LIMIT,你可能想看看這個舊帖子。 (它可以幫助)

Old Post using fetch_assoc()

而且,現在你沒有使用MYSQL出現。這裏有另外一個鏈接,可以給出你正在使用的任何類型的SQL的答案。

Return only X amount of rows

+0

那第二個鏈接:D:D:D:D。非常感謝,這是SELECT首先yada yada yada。 – Steve

3

如何:

SELECT M.Title, M.Yearreleased 
FROM Stars S, ActsIn A, Movies M 
WHERE S.Givenname = 'Eddie' AND S.Familyname = 'Murphy' 
AND S.StarID = A.StarID 
AND A.MovieNum = M.MovieNum 
ORDER BY Yearreleased Desc 
LIMIT 1 

此外,在一個不那麼相關的說明,我會考慮開始使用明確連接,而不是隱式連接。這將使它看起來像這樣:

SELECT M.Title, M.Yearreleased 
FROM Stars S 
INNER JOIN ActsIn A on S.StarID = A.StarID 
INNER JOIN Movies M on A.MovieNum = M.MovieNum 
WHERE S.Givenname = 'Eddie' AND S.Familyname = 'Murphy' 
ORDER BY Yearreleased Desc 
LIMIT 1 

相信我,明確JOIN會當外連接需要讓你自由。和查詢是更好的理解和可讀性:連接是連接,過濾器是過濾器

+0

不幸的是LIMIT不支持DBI,我不得不使用uni。它是:(。 – Steve

+0

什麼是RDBMS? –

+0

SQLFIRE它給我這個錯誤「令牌未知 - 限制」歡呼的顯式連接提示:) – Steve