On 05/01/2012, at 1:48 AM, Petite Abeille wrote:
>> select
>> "cast".character_name as "Character Name"
>> , "actors".name || ' ' || actors.surname as "Actor"
>> , group_concat("other movies".title, ', ') as "Other movies where we've
>> seen this actor"
>> from "movies"
>> join "cast" using (movie_id)
>> join "actors" using (actor_id)
>> join "cast" as "other cast" on "other cast".actor_id =
>> "actors".actor_id
>> join "movies" as "other movies" on "other movies".movie_id = "other
>> cast".movie_id
>> where "other movies".movie_id != "movies".movie_id
>> and "movies".movie_id = ?
>
> Unfortunately, looks like this query will filter out actors that have
> performed in only that one movie, as the inner join to "other cast" will not
> match anything. Perhaps a left outer join would be more appropriate, no?
Good catch. You're right. I should have used left joins so as not to filter
them out. That makes the query:
select
"cast".character_name as "Character Name"
, "actors".name || ' ' || actors.surname as "Actor"
, group_concat("other movies".title, ', ') as "Other movies where we've
seen this actor"
from "movies"
join "cast" using (movie_id)
join "actors" using (actor_id)
left join "cast" as "other cast" on "other cast".actor_id =
"actors".actor_id
left join "movies" as "other movies" on "other movies".movie_id =
"other cast".movie_id
where "other movies".movie_id != "movies".movie_id
and "movies".movie_id = ?
Thanks,
Tom
Tom Brodhurst-Hill
BareFeetWare
--
iPhone/iPad/iPod and Mac software development, specialising in databases
[email protected]
--
Twitter: http://twitter.com/barefeetware/
Facebook: http://www.facebook.com/BareFeetWare
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users