объединенные таблицы перезаписывают столбцы - PullRequest
0 голосов
/ 12 января 2012

При использовании Zend_Db_Table s и Zend_Db_Table_Select с Zend_Db_Adapter_Pdo_Pgsql возникла проблема при использовании запроса выбора:

$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);

, я также не получаю то, что ожидаю.

1 Ответ

0 голосов
/ 12 января 2012

Чтобы различать таблицы a и b при наличии совпадающих имен столбцов, вам нужно создать псевдоним столбцов в таблице b.Тогда соединение будет выглядеть примерно так:

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

Обратите внимание, что условие 'ON' должно быть строкой, а не массивом.

...