2016-12-08 17 views
0

私は映画について3つのテーブルを持っています。最初はmovieであり、2番目はactorであり、最後はmovie_actor_mappingです。私は、各ムービーのテーブルムービーとグループアクターからデータを選択するクエリを作成しました。そして、私のクエリはactorテーブルからすべての俳優を選択しますが、私は最初の4人の俳優だけを選択しなければなりません。選択を変更するにはどうすればよいですか?INNER JOIN、GROUP BY、LIMITを含むSELECT

SELECT title, year, poster, rating, group_concat(a.name separator ', ') as actors 
FROM movie m 
INNER JOIN movie_actor_mapping ma ON m.movie_id = ma.movie_id 
INNER JOIN actor a ON a.actor_id = ma.actor_id 
WHERE m.rating IS NOT NULL 
GROUP BY m.movie_id 
ORDER BY m.rating DESC; 
+0

最初はどのような順ですか?アルファベット順ですか? – Barmar

+0

こんにちは!ちょうどテーブル – rel1x

+0

のテーブルには順序がありません。あなたは 'ORDER BY'を使ってクエリの順序を指定する必要があります。 – Barmar

答えて

1

あなたはこれがあなたに映画あたり3人の役者を与えるだろう最初の3つの結果にsubstringinggroup_concat出力、例えば:

select m.name as movie, substring_index(group_concat(a.name SEPARATOR ','), ',', 3) as actors 
from movie m 
join movie_actor ma on m.id = ma.movie_id 
join actor a on ma.actor_id = a.id 
group by m.id 
order by m.id, a.id; 

によって周りにそれをハックすることができます。

ここにはSQL Fiddleがあります。

+0

ありがとう! – rel1x