簡體   English   中英

聯接表覆蓋列

[英]joined tables overwrite the columns

當使用Zend_Db_Table S和Zend_Db_Table_SelectZend_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);

我也沒有得到我所期望的。

為了在有匹配的列名時區分表a和b,您需要對表b中的列進行別名化。 然后,該聯接將類似於:

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

請注意,“ ON”條件應為字符串,而不是數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM