2012-10-02 7 views
1

mysql 테이블에 2 행이 있습니다. 일부 데이터는 행에 걸쳐 복제되고 일부는 같은 행에 복제됩니다. 각 고유 값을 반향시키고 싶습니다.2 행 반복, 중복 및 병합

Array ([0] => Array ([Character1] => Moe Szyslak [Character2] => 0) [1] => Array ([Character1] => Homer Simpson [Character2] => 0) [2] => Array ([Character1] => Homer Simpson [Character2] =>) [3] => Array ([Character1] => Homer Simpson [Character2] => Marge Simpson) 

foreach's array_unique 등과 함께, 여러 가지를 시도,하지만 아무것도 그래서 나는 방법 해제해야합니다 생각하고 근처에도 없습니다 :

배열은 다음과 같습니다. 예상되는 결과는 다음과 같습니다 Moe Szyslak Homer Simpson Marge Simpson

편집 : 쿼리 (그리고 그래 내 DB 구조가 훨씬 더 있어야한다)는 CI 모델에 있습니다

function getCharacter() 
{ 
$query = $this->db->query("SELECT DISTINCT Character1, Character2 FROM clip"); 
return $query->result_array(); 
} 
+0

해당 레코드를 가져 오는 데 사용하는 쿼리를 추가 할 수 있습니까? –

답변

1

. 그래서 아래의 데이터를, 세 개의 행이 반환 될 것이다 - 행 2, 4 행 중 하나 (행 1 및 3)

Character1 | Character2 
----------------------------- 
Moe Szyslak | Homer Simpson 
Marge Simpson | Moe Szyslak 
Moe Szyslak | Homer Simpson 
Moe Szyslak | Marge Simpson 

를 사용하여 아래의 코드는 고유 한 값을 얻을 수

그렇지
$charaters = array(); 
foreach ($charater_arr as $charater_arr) { 
    if (!in_array($charater_arr['Character1'], $charaters)) { 
    $charaters[] = $charater_arr['Character1']; 
    } 
    if (!in_array($charater_arr['Character1'], $charaters)) { 
    $charaters[] = $charater_arr['Character2']; 
    } 
} 
print_r($charaters); 

아래 쿼리를 사용해보십시오.

SELECT Character1 AS character FROM clip 
UNION 
SELECT Character2 AS character FROM clip 
+0

그게 거의 효과가 있었는데, 문자 그대로 모든 복제본을 제거 했으므로 나는 홈런이 없었습니다. (그것은 테이블의 고유 한 값을 반향 만합니다.) – jaybong

+0

@ 제이봉은 당신이 원했던 것이 아닙니까? – air4x

+0

아, 죄송합니다. 코드에서 오류가 발생하여 테이블에서 고유 한 경우에만 결과가 반환됩니다 (중복되는 경우 첫 번째 결과가 반환되지 않음). 이제 완벽하게 작동합니다. 덕분에. – jaybong

1

것은 당신이에서 "* 별개의 선택"할 수있는 당신의 속임수를 제거 할 테이블?

또 다른 옵션은 배열의 이전 값을 확인하는 것입니다 : 같은 Character1Character2를 포함 DISTINCT Character1, Character2만이 위드 행을 사용

for ($i = 0; $i < count($array); $i++) 
{ 
    if ($i == 0 || $array[$i]->Character1 != $array[$i - 1]->Character1) 
    { 
     echo $array[$i]->Character1 ."<br />"; 
    } 
} 
+0

어떤 이유로 뚜렷한 선택이 작동하지 않을 것입니다. 그것은 초기 계획이었습니다. – jaybong

+0

코드를 다시 실행하면 if 문에서 'non-object의 속성을 얻으려고 시도하는 중'오류가 발생하고 조건문을 편집하면 이후 줄에서 오류가 발생합니다. $ array [$ i] -> Character1 구문 때문이라고 생각합니다. $ array의 코드에서 모든 인스턴스를 배열의 실제 이름 ($ characterArr)으로 변경했지만 여전히 오류가 발생했습니다. 나는 컨셉을 얻었지만 이것에 익숙하지 않아 지금까지 구문을 수정하지 못했습니다. – jaybong