我正在與電影數據庫進行更多的JOIN操作。我的問題是關於問題#16:列出所有曾與'藝術加芬克爾'合作過的人SQLzoo more JOIN execerise#16
您需要首先獲取Art Garfunkel所在的所有電影作爲一個值,然後獲取所有名爲通過將它與第一個值進行比較來看相同的電影。
我想到了我自己的查詢,並通過邏輯它應該工作,但不會因超時(這我假設是由於低效的查詢)
我的查詢:
SELECT DISTINCT a.name
FROM actor a
JOIN casting b ON (a.id=b.actorid)
JOIN movie c ON (b.movieid=c.id)
WHERE c.title IN(SELECT z.title
FROM movie z
JOIN casting y ON (z.id=y.movieid)
JOIN actor x on (y.actorid=x.id)
WHERE x.name='Art Garfunkel')
另一個版本:
SELECT DISTINCT actor.name
FROM movie,actor,casting
WHERE movie.id=casting.movieid
AND actor.id=casting.actorid
AND movie.title IN(SELECT movie.title
FROM movie,actor,casting
WHERE movie.id=casting.movieid
AND actor.id=casting.actorid
AND actor.name='Art Garfunkel')
這些都拋出一個解析錯誤說,有一個超時試圖查詢任何如上圖所示。
的,他們提供的查詢的版本,被公認是一種回答是:
SELECT DISTINCT d.name
FROM actor d JOIN casting a ON (a.actorid=d.id)
JOIN casting b ON (a.movieid=b.movieid)
JOIN actor c ON (b.actorid=c.id
AND c.name='Art Garfunkel')
WHERE d.id!=c.id
是我的邏輯完全錯了嗎?或者說這個查詢是非常非常低效的(我在想這個)。有沒有辦法解決它運行並得到正確的答案?或者我應該更正確地考慮正確的查詢方式嗎?
這麼多的問題,但我想要反饋爲什麼該查詢不起作用,下一步是什麼。
給定的查詢實際上也不起作用。它返回上面提到的相同的分析錯誤。這就是爲什麼我很困惑,爲什麼我提到的底部查詢工作,但我寫的兩個沒有 – Paul 2013-03-17 22:40:34
即時通訊不知道對不起 – Hamoudy 2013-03-17 22:49:42
這是他們的錯誤,嘗試用他們的電子郵件發送郵件 – Hamoudy 2013-03-17 23:09:54