Привет всем!
Два дня сижу, никак не могу сделать выборку, наверное опыта не хватает. Вот решил обратиться к вам, спросить у вас ))
К сути!
Есть таблицы
Таблица — films
Таблица — film_actors
Таблица — film_crew
есть еще сопутствующие таблицы persons, career_list и тд, но они не так важны, их можно потом привязать, главное с этими разобраться.
ладно )
Выборка происходит на стр персоны — список фильмов где персона снималась или принимала хоть какое-то участие в фильме
Пытаюсь сделать выборку из всех 3-х таблиц, известен person_id
выборку делаю на основе 2-х таблиц film_actors и film_crew в каждой запись может быть, а может и не быть, в film_crew записей может быть не одна (персона может быть продюсером картины, режиссером и тд)
Наверное как-то запутанно получилось
Пытаюсь вывести список фильмов, вот так
Например мы на стр Мартина Скорсезе
он только режиссер картины
или мы например на стр Леонардо ДиКаприо
он актер, продюсер и сценарист картины (сценариста я от себя добавил для наглядности)
Вот! Помогите )) никак не могу сделать такую выборку
UNION не подходит как я понимаю, так как таблицы разные
Спасибо!
PS: мой вариант выборки, но выводит почти правильно, если персона присутствует только в одной из двух таблиц, но если в двух то вывод путается, почему не могу понять
SELECT t5.*, GROUP_CONCAT(DISTINCT(t6.career) ORDER BY t6.id ASC SEPARATOR ', ')
AS career FROM (SELECT t1.id, t1.title, t1.title_en, t1.year, t1.type, t1.premiera_ru,
t1.premiera_w, t3.career_id, t2.main_role, t2.character
FROM films t1
LEFT JOIN film_actors t2 ON t2.person_id = '$person[id]'
LEFT JOIN film_crew t3 ON t3.person_id = '$person[id]'
WHERE (t1.id = t2.film_id OR t1.id = t3.film_id)
AND (t2.person_id IS NOT NULL OR t3.person_id IS NOT NULL) ) AS t5
LEFT JOIN person_careers_list t6 ON t6.id = t5.career_id
GROUP BY t5.id ORDER BY t5.premiera_w DESC