为什么Zend框架Db表在我的查询中的表名之前放了一个星号?

时间:2013-07-11 14:10:44

标签: zend-framework zend-db zend-db-table

我遇到这样的查询问题:

$sSqlAux = $this->select()->setIntegrityCheck(false)
  ->from(array("a_aux" => $this->_name), "id_a", $this->_schema)
  ->join(array("b_aux"=> "b"), "a_aux.id_a = b_aux.id_b", array(), $this->_schema)
  ->join(array("c_aux"=> "c"), "a_aux.id_inscrito = c_aux.id_c", array(), $this->_schema)
  ->where("b_aux.id_b = ?", $this->idB)
;
$sSql = $this->select()->setIntegrityCheck(false)
  ->from(array("a" => $this->_name), "a.id_a, a.campo_a", $this->_schema)
  ->joinLeft(array("b" => "b"), "a.id_a = b.id_b", "b.campo_b", $this->_schema)
  ->joinLeft(array("c" => "c"), "b.id_b = c.id_c", "c.campo", $this->_schema)
  ->where("c.campo_c = ?", "string")
  ->where("a.id_a IN (?)", new Zend_Db_Expr($sSqlAux))
  ->order("c.campo_c")
;

并且为了返回数据,在表的名称之前添加了一个星号,在本例中,在我的一个左连接中添加了表b( LEFT JOIN schema。* b ON a.id_a = b。 id_b )如下例

SELECT 
  a.id_a, 
  a.campo_a 
  b.campo_b, 
  c.campo_c
FROM schema.a a
 LEFT JOIN schema.*b ON a.id_a = b.id_b
 LEFT JOIN schema.c c ON a.id_a = c.id_c
WHERE (c.campo_c = 'string') 
AND (a.id_a IN (
  SELECT a_aux.id_a
  FROM schema.a a_aux 
  INNER JOIN schema.b b_aux ON a_aux.id_a = b_aux.id_b
  INNER JOIN schema.c c_aux ON a_aux.id_a = c_aux.id_c 
  WHERE (a_aux.id_segundo_id = 5321))) 
  ORDER BY c.campo ASC 
)

这些只是我遇到的问题的一个例子,如果我的输入中出现逻辑错误或语法错误。真正的问题是在连接中的表名之前由zend添加了星号。

如果有人理解了这个问题,并且有一个可以分享的解决方案,那将会有很大的帮助。

我正在使用zend 1

感谢'!小号

1 个答案:

答案 0 :(得分:-1)

我有同样的问题并解决了它。 我在ORACLE数据库上,所有的表名和列名必须是大写的。 如果您也在ORACLE DB上,请尝试使用B_AUX而不是b_aux。