私は3つのテーブルactor
,movie
,casting
を持っています。私は俳優 "ART Garfunkel"と仕事をした人たちを見つけなければなりません。「Art Garfunkel」で働いていたすべての人をリストするには?
解決方法がありますが、次のクエリの仕組みを理解できません。
**movie** **actor** **casting**
id id movieid
title name actorid
yr ord
director
budget
gross
SELECT a.name
FROM (SELECT movie.*
FROM movie
JOIN casting
ON casting.movieid = movie.id
JOIN actor
ON actor.id = casting.actorid
WHERE actor.name = 'Art Garfunkel') AS m
JOIN (SELECT actor.*, casting.movieid
FROM actor
JOIN casting
ON casting.actorid = actor.id
WHERE actor.name != 'Art Garfunkel') as a
ON m.id = a.movieid;
1以上ソリューション:
SELECT actor.name FROM casting
JOIN movie ON movie.id=casting.movieid
JOIN actor ON actor.id=casting.actorid
WHERE actor.name !='Art Garfunkel'
AND
movie.id IN(SELECT movie.id FROM casting
JOIN movie ON movie.id=casting.movieid
JOIN actor ON actor.id=casting.actorid
WHERE actor.name='Art Garfunkel')
はウル問い合わせについては、以下のエラーを取得しています。 エラー: テーブル 'gisq.Actor'が存在しません – kal
SQL Serverを使用していますか?あなたは間違った状況にある可能性が高いです。クエリの最初に 'USE [Your_Database_Name] GO'を試してみてください。 – rjmd
実際にSQl ZOO webstieを使って(練習) http://sqlzoo.net/wiki/More_JOIN_operations – kal