объединить 2 таблицы через дополнительный MySQL / PHP

0

Скажем, у нас есть 2 таблицы

#film_info
[
movieID
movieValue1
movieValue2
]
#actor_info
[
actorID
actorValue1
actorValue2
]

и мы также имеем

#film_actor 
[movieID, actorID]

то, что я пытаюсь сделать, это присоединиться к этим фильмам и actro через movie_actor, чтобы я мог выбрать фильм и увидеть каждого актера, который играет в нем.

$db->prepare("SELECT * 
FROM film_info fi 
INNER JOIN film_actor fa 
ON fi.film_id = fa.film_id 
INNER JOIN actor_info ai 
ON fa.actor_id = ai.actor_id");

с чем-то вроде этого. Он работает, но дает мне множество всей информации о фильме для каждого актера, который в нем играет. Например, если есть шесть актеров, он будет возвращать 6 массивов одной и той же информации о фильме, каждый раз имея разные [actor_name].

На что стоит вопрос: есть ли способ заставить его вернуть один массив со списком всех участников? Или я должен просто написать функцию, чтобы вручную выбрать всех участников из 6+ массивов?

Извините за мой страшный английский и спасибо заранее!

  • 0
    Я не очень хорошо разбираюсь в SQL, можешь показать мне, как это написать?
  • 0
    Спасибо большое, работает отлично!
Теги:

1 ответ

0
Лучший ответ

Вы должны group by фильму, затем group_concat актеров, чтобы все они были возвращены в 1 ряду фильмов. Кроме того, можно использовать с using для on когда столбцы обеих таблиц имеют одинаковое имя. Это должно делать то, что вы спрашиваете:

SELECT fi.movie_title, group_concat(actor_name_column) 
FROM film_info fi 
INNER JOIN film_actor using(film_id) 
INNER JOIN actor_info using(actor_id) 
group by film_id

Ещё вопросы

Сообщество Overcoder
Наверх
Меню