1
그래서 세 개의 테이블이 있습니다. Movies
, movies_genres
및 genres
. 나는 이드가 영화를 만들고 그 결과로 장르에 합류하기를 원한다. 결과에 참여할 수 있었지만 원하는대로 표시되지 않습니다. 내가 묻는 것이 가능하면 잘 모르겠다. 그 도움이된다면가입 후 그룹 결과?
SELECT `movies`.*, GROUP_CONCAT(genres.id) AS genre_id, GROUP_CONCAT(genres.name) AS genre_name
FROM (`movies`)
INNER JOIN `movies_genres`
ON `movies_genres`.`movie_id` = `movies`.`id`
INNER JOIN `genres`
ON `genres`.`id` = `movies_genres`.`genre_id` WHERE `movies`.`id` = 19908
GROUP BY `movies`.`id`
, 여기에 CodeIgniter의 코드입니다 : 여기
$this->db->select('movies.*, GROUP_CONCAT(genres.id) AS genre_id, GROUP_CONCAT(genres.name) AS genre_name');
$this->db->from('movies');
$this->db->where('movies.id', $movie_id);
$this->db->join('movies_genres', 'movies_genres.movie_id = movies.id', 'inner');
$this->db->join('genres', 'genres.id = movies_genres.genre_id', 'inner');
$this->db->group_by('movies.id');
내가 현재 해요 결과
이
내 쿼리입니다Array
(
[id] => 19908
[movie_title] => Zombieland
[overview] => An easily spooked guy...
[genre_id] => 28,12,35,27
[genre_name] => Action,Adventure,Comedy,Horror
)
을 그리고 이것은 내가 원하는 무엇인가 : 점점
Array
(
[id] => 19908
[movie_title] => Zombieland
[overview] => An easily spooked guy...
[genres] => array(
0 => array(
'id' => 28,
'name' => Action
),
1 => array(
'id' => 12,
'name' => Adventure
),
1 => array(
'id' => 35,
'name' => Comedy
),
1 => array(
'id' => 27,
'name' => Horror
)
)
)
이 경우 가능합니까?
그것은 작동 할 것이고 이미 고려해 봤지만 대신 SQL 쿼리에서 수행 할 방법이 있는지 알고 싶습니다. 그냥 불필요한 PHP 코드를 피하기 위해. 그러나 가능하지 않다면 효과가 있습니다. :) – qwerty
@qwerty. 오 그래. 그럼 내 대답의 선택을 취소하는 것이 좋습니다. codeigniter가 이러한 종류의 다중 레벨 배열 생성을 지원하는지 여부를 알 수있는 사람들은 확인 된 것을 읽으면 질문을 읽지 않을 수도 있습니다. – jedwards
오, 맞습니다. 팁 고마워! 몇 분 후에 더 좋은 답변을 한 사람이 없다면 다시 받아 들일 것입니다. – qwerty