我有一个查询,在子查询上执行了LEFT JOIN
。这个查询在高负载环境下运行,并且能够满足设定的要求。这个查询(高度简化)如下:
SELECT
table_A.pKey
, table_A.uKey
, table_A.aaa
, table_B.bbb
, alias_C.ccc
, alias_C.ddd
FROM table_A
INNER JOIN table_B ON table_A.pKey = table_B.pKey
LEFT JOIN (
SELECT
table_X.pKey
, table_X.ccc
, table_Y.ddd
FROM table_X
INNER JOIN table_Y ON table_X.pKey = table_Y.pKey
) AS alias_C ON table_A.uKey = alias_C.pKey;
由于种种原因,无法将子查询重写为(直接)LEFT JOIN。
现在,我无法使用Zend_Db_Select
使LEFT JOIN on subselect
起作用。我尝试了我能想到的一切,但它不起作用。
所以我的问题是:
- 是否不可能使用
Zend_Db_Select
执行上述描述的查询? - 我需要什么语法才能让它在Zend Framework中起作用?
toSting()
或__toString()
。您可以尝试调用类似die($select)
的一些调试代码,它将以您使用的数据库方言打印查询。 - Jakub Trunečeknew Zend_Db_Expr('('.$subselect.')')
是关键,在Magento上也非常有用! - WonderLand->joinLeft(array('c' => new Zend_Db_Expr('('.$subselect.')')), 'c.pkey = a.ukey', array())
- 无法编辑,因为SO要求修改超过6个字符。 - goredwards