2012-01-12 2 views
0

을 덮어, 내가 선택 쿼리를 사용하여 문제가 있습니다 : 행 집합의조인 된 테이블은 열

$rowset = $db->select()->from(array('a'=>'tablea')) 
      ->columns(array('a.a')) 
      ->join(array('b'=>'tableb'),'b.id = a.id', array('b.a')) 
      ->query()->fetchAll(); 

예상 내용 : (주로 키)

$rowset['a.a'] = "something"; 
$rowset['b.a'] = "somethingElse"; 

실제 내용이 $rowset 인 경우 $rowset['a'] 만 존재하며 조인 된 테이블을 구분할 방법이 없습니다.

이 모든 솔루션은 무엇입니까?


그냥 내가 또한 내가 무엇을 기대하지 않는

$q = "SELECT * FROM tablea AS a 
JOIN tableb AS b ON a.key = b.fkey"; 
$dbtable->getAdapter()->fetchAll($q); 

을하고.

+0

질문에 오타가 있습니까? 정의에 따라 배열 키는 고유하므로 "행 집합의 예상 내용"이 나에게 의미가 없습니다. –

+0

''tablename 'AS'alias ''구문을 사용할 때, 결과는'alias'와 같은 것으로 기대됩니다. '. 그것들은 참으로 독특합니다. 그러나 이것은 여기서 일어나는 일이 아닙니다. –

+0

아,하지만 실제로 두 번째'$ rowset [ 'b.a']' –

답변

0

일치하는 열 이름이있을 때 테이블 a와 b를 구별하려면 테이블 b의 열을 별칭으로 지정해야합니다. 당시 같이 보일 것이다 가입 :

->join(array('b' => 'tableb'), 'a.id = b.id', array('a_from_b' => 'b.a')) 

'ON'상태가 아닌 문자열 배열해야한다는주의하시기 바랍니다.

+0

감사. 가장 우아한 솔루션은 아니지만 이것이 효과적입니다. –

관련 문제