0

これは私のコードです。後でphpに入れますが、当面は提供されているクエリテスターで使用しています。六次の隔たりではなく、六次の隔たりをやっています。

私の質問は次のとおりです。

SELECT name,year
FROM actors
JOIN roles ON roles.actor_id = actors.id
JOIN movies ON movies.id=roles.movie_id
WHERE actors.first_name= 'kevin' AND actors.last_name='bacon' OR actors.first_name= 'sean' AND actors.last_name='penn'
ORDER BY movies.name;

その結果

Animal House 1978
Apollo 13 1995 
Few Good Men, A 1992 
Footloose 1984 
Hollow Man 2000 
JFK 1991 
Mystic River 2003 
Mystic River 2003 
Planes, Trains & Automobiles 1987 
Stir of Echoes 1999 

ミスティックリバーのみを表示するにはどうすればよいですか?

4

4 に答える 4

1

まず、条件をグループ化します

WHERE (actors.first_name= 'kevin' AND actors.last_name='bacon') OR 
      (actors.first_name= 'sean' AND actors.last_name='penn')

次に、キーワードDISTINCTの後に​​追加しますSELECT

SELECT DISTINCT ...

フォローアップの質問:なぜあなたは見せたいだけなのですMystic Riverか?

于 2012-11-07T05:32:33.390 に答える
1

私はあなたがここで求めているワットはDISTINCTだと思います...

DISTINCTキーワードは、異なる(異なる)値のみを返すために使用できます。

これを試して

SELECT DISTINCT name,year
FROM actors
JOIN roles ON roles.actor_id = actors.id
JOIN movies ON movies.id=roles.movie_id
WHERE (actors.first_name= 'kevin' AND actors.last_name='bacon') OR (actors.first_name= 'sean' AND actors.last_name='penn')
ORDER BY movies.name;

そしてこれはwhere句で、

 WHERE (actors.first_name= 'kevin' AND actors.last_name='bacon') AND (actors.first_name= 'sean' AND actors.last_name='penn')

ケビンベーコンとショーンペンの両方が同じ映画のどこにあるか知りたい場合

于 2012-11-07T05:34:38.083 に答える
1

私があなたの質問を正しく理解していれば、あなたは と を含む映画のリストを見つけようとSean PennKevin Baconています。その場合、クエリでアクターとロール テーブルを 2 回使用する必要があります。

SELECT
    movies.name,
    movies.year
FROM
    actors AS actor2 INNER JOIN roles AS role2 ON actor2.ID = role2.actor_id
           INNER JOIN actors AS actor1 INNER JOIN roles AS role1 ON actor1.ID = role1.actor_id
                INNER JOIN movies ON role1.movie_id = movies.ID ON role2.movie_id = movies.ID
WHERE
    actor1.first_name= 'kevin' AND actor1.last_name='bacon'
        AND
    actor2.first_name= 'sean' AND actor2.last_name='penn'
ORDER BY movies.name;
于 2012-11-07T05:48:14.200 に答える
0

これを試して

SELECT DISTINCT name,year
FROM actors
JOIN roles ON roles.actor_id = actors.id
JOIN movies ON movies.id=roles.movie_id
WHERE actors.first_name= 'kevin' AND actors.last_name='bacon' OR actors.first_name= 'sean' AND actors.last_name='penn'
ORDER BY movies.name;
于 2012-11-07T05:31:51.050 に答える