我遇到这样的查询问题:
$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
感谢'!小号
答案 0 :(得分:-1)
我有同样的问题并解决了它。 我在ORACLE数据库上,所有的表名和列名必须是大写的。 如果您也在ORACLE DB上,请尝试使用B_AUX而不是b_aux。