2016-06-07 2 views
2

Mysql join에 문제가 있습니다. 두 테이블, center_contacts 테이블과 center_contacts_notes 있습니다. center_contacts_notes은 두 테이블 모두에있는 contact_id을 통해 연결됩니다.Mysql Join 결과 합치기

center_contacts_notes 안에는 contact_id 당 여러 행이있을 수 있으며이 모든 것을 포착하여 결과의 ​​하위 배열에 넣고 싶습니다. 내가 CodeIgniter의 3

사용하고

$this->db->select('center_contacts.id, FirstName, LastName, center_contacts_notes.note'); 
$this->db->from('center_contacts'); 
$this->db->join('center_contacts_notes', 'center_contacts_notes.contact_id = center_contacts.id'); 

참고 :

여기
contact_id | note 
------------------------ 
1    test 
2    hello 
3    sup 
1    moo 

내가 데이터를 잡기 위해 시도하고있다 여기서

예를 들어, 여기처럼 내 center_contacts_notes 테이블 모습입니다

여기가 내가 얻은 것입니다.

Array 
(
    [id] => 1 
    [FirstName] => Bob 
    [LastName] => Smith 
    [note] => test 
) 
Array 
(
    [id] => 1 
    [FirstName] => Bob 
    [LastName] => Smith 
    [note] => moo 
) 

내 결과에는 두 개의 다른 배열이 있습니다. 이 두 가지 노트를 포함하는 하나의 배열이 필요하므로 내 사용에는 비실용적입니다. 다음과 같이 입력하십시오 :

Array 
(
    [id] => 1 
    [FirstName] => Bob 
    [LastName] => Smith 
    [note] => Array(test, moo) 
) 

가능하면 어떻게할까요? 감사.

+2

시도해 보셨습니까 GROUP_CONCAT() – anju

답변

1

언급 한 것처럼 2 차원 배열을 얻을 수 있는지는 알 수 없지만 유사한 결과를 얻는 방법이 있습니다. 이것은 당신에게 도움이 될 수 있습니다.

Group Bygroup_concat()을 사용해야합니다. Group by 표를 contact_id으로 변경하고 group_concat()center_contacts_notes.note에 적용합니다.

쿼리는 다음과 같아야합니다.

$this->db->select('center_contacts.id, FirstName, LastName, GROUP_CONCAT(center_contacts_notes.note)'); 
$this->db->from('center_contacts'); 
$this->db->join('center_contacts_notes', 'center_contacts_notes.contact_id = center_contacts.id'); 
$this->db->group_by('center_contacts.id'); 

기본적으로 group_concat은 ,에 의해 열을 연결합니다. 다음과 같이 변경할 수 있습니다.

GROUP_CONCAT(center_contacts_notes.note SEPARATOR 'YOUR_SEPARATOR_STRING') 

이 다음과 같이 결과를 반환합니다 : 당신은 분리 값을 제공하여 배열로 노트 문자열을 변환 할 PHP explode을 사용할 수 있습니다

Array 
(
    [id] => 1 
    [FirstName] => Bob 
    [LastName] => Smith 
    [note] => test[YOUR_SEPARATOR_STRING] moo 
) 

.

+0

Group_concat이 효과가있는 것으로 보입니다. 배열이 아니지만 의도 한대로 구문 분석 할 수 있습니다. 감사. – Nic